Excel三(多个)VLOOKUP,在两个工作表上具有串联的VLOOKUP值

Mat*_*att 3 excel vba excel-vba excel-formula vlookup

我想创建一个VLOOKUP超过2个工作表,并查看三个查找值,其中三个值中间是一个-。

基本数据太大,无法在此处放置(限制为3万个字符),因此文件如下:

https://wetransfer.com/downloads/b475e4206e9b1c01519b4e6405fbf2f420180208112525/49c87b

在“转换”选项卡中,我尝试使用以下公式:

=INDEX(Data!D10:BB300,MATCH(A4&"-"&B3,INDEX(Data!D7:AO7,0)),MATCH(Transform!B2,Data!A11:B300,0))
Run Code Online (Sandbox Code Playgroud)

但是#N/A即使我已将其指向正确的单元格,也可以得到。

预期的输出也位于文件中。

快速说明:

在Data标签我有一个有特定日期,如行Jan-16,Feb-16,Mar-16等

同样在Data标签中,我有一行包含Actual或Budget

同样在Data选项卡中我有值Total Alpha

在Transform选项卡中,我将其布局如下:

_______________________
|Actual | Total Alpha | 
-----------------------
|       |16     |17   |
-----------------------
|Jan    |       |     |
----------------------- 
|Feb    |       |     |
-----------------------
|Mar    |       |     |
-----------------------
|Apr    |       |     |
-----------------------
|May    |       |     |
-----------------------
|Jun    |       |     |
-----------------------
|Jul    |       |     |
-----------------------
|Aug    |       |     |
-----------------------
|Sep    |       |     |
-----------------------
|Oct    |       |     |
-----------------------
|Nov    |       |     |
-----------------------
|Dec    |       |     |
-----------------------
|       |       |     |
-----------------------
|Budget |       |     |
-----------------------
|       |18     |     |
-----------------------
|Jan    |       |     |
-----------------------
|Feb    |       |     |
-----------------------
|Mar    |       |     |
-----------------------
|Apr    |       |     |
-----------------------
|May    |       |     |
-----------------------
|Jun    |       |     |
-----------------------
|Jul    |       |     |
-----------------------
|Aug    |       |     |
-----------------------
|Sep    |       |     |
-----------------------
|Oct    |       |     |
-----------------------
|Nov    |       |     |
-----------------------
|Dec    |       |     |
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
Run Code Online (Sandbox Code Playgroud)

而且使用的是三VLOOKUP我希望能够看(例如): & Actual&Total Alpha&Nov(17使用类似A4&"-"&B3合并值作为数据卡具有类似的值Nov-17),并找到在相关的价值Data标签。

QHa*_*arr 5

在范围B4中

=INDEX(Data!$A$1:$Z$22,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE(Transform!$A4&Transform!B$3),Data!$1:$1,0))
Run Code Online (Sandbox Code Playgroud)

拖动以填充到C15。

在B19中

=INDEX(Data!$AA$1:$AL$22,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE(Transform!$A19&Transform!B$18),Data!$1:$1,0)-COLUMN(Data!Z1))
Run Code Online (Sandbox Code Playgroud)

拖动以填充到B30。

这将为查找范围建立索引,然后找到感兴趣的行(例如,总alpha)和列(日期),并返回相交值。

工作表中的公式

如果需要其他行,请更改B2中的值,例如Total Beta

b2中的总beta

版本2:对“实际”和“目标”进行动态查找-可以进行一些整理

创建两个命名范围

Ctrl+ F3打开名称管理器,然后添加

名称:ActualRange

引用至:

=OFFSET(Data!$A$1,0,0,ROWS(Data!$1:$22),MATCH(Transform!$A$17,Data!$2$2,0)-1)
Run Code Online (Sandbox Code Playgroud)

名称:BudgetRange

引用至:

=OFFSET(Data!$A$1,0,MATCH(Transform!$A$17,Data!$2$2,0)-1, ROWS(Data!$1:$22),MATCH(Transform!$A$17,Data!$2$2,0))
Run Code Online (Sandbox Code Playgroud)

然后在B4拖动中填充C15去:

=INDEX(ActualRange,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE(Transform!$A4&Transform!B$3),Data!$1:$1,0)
Run Code Online (Sandbox Code Playgroud)

然后在B19拖动中填充B30去:

=INDEX(BudgetRange,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE(Transform!$A19&Transform!B$18),Data!$1:$1,0)+ROWS($A$19:$A19))
Run Code Online (Sandbox Code Playgroud)

有一些范围可以进一步缩小当前在整行中设置的索引范围。