Excel三重(多个)VLOOKUP,在两个工作表上具有连接的VLOOKUP值

时间:2018-02-08 11:27:20

标签: excel vba excel-vba excel-formula vlookup

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

基础数据太大,无法放入此处(30k字符限制),所以这里是文件:

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))

但即使我已将其指向正确的单元格,也要获得#N/A

预期输出也在文件中。

快速解释:

Data标签中,我有一行包含Jan-16Feb-16Mar-16等日期

同样在Data标签中我有一行包含ActualBudget

同样在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    |       |     |
 ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅ 

使用三VLOOKUP我希望能够查看(例如): Actual& Total Alpha& Nov& 17(使用A4&"-"&B3之类的内容将值合并为数据标签,其值为Nov-17),并在Data标签中找到相关值。

2 个答案:

答案 0 :(得分:4)

在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))

拖动以填充到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))

拖动以填充到B30。

这会索引一个查找范围,然后找到感兴趣的行(例如总alpha)和列(日期),并返回交叉值。

Formulas in sheet

如果您想要不同的行,请更改B2中的值,例如总测试版

total beta in b2

版本2:实际和目标的动态查找 - 可以稍微整理

创建两个命名范围

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

名称:ActualRange

参考:

=OFFSET(Data!$A$1,0,0,ROWS(Data!$1:$22),MATCH(Transform!$A$17,Data!$2$2,0)-1)

名称: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))

然后在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)

然后在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))

有一些余地可以进一步减少当前在整行中设置的索引范围。

答案 1 :(得分:1)

这些数组公式应该可以满足您的需求。
必须使用 Ctrl + Shift + 输入提交

Transform!B4应该(将其复制到Transform!B4:C15范围内的其余单元格):

=INDEX(Data!$A$1:$AL$22,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE($A4&" 1, "&B$3)&$A$2,Data!$A$1:$AL$1&Data!$A$2:$AL$2,0))


Transform!B19应该是{将其复制到Transform!B19:B30范围内的其余单元格):

=INDEX(Data!$A$1:$AL$22,MATCH(Transform!$B$2,Data!$A$1:$A$22,0),MATCH(DATEVALUE($A19&" 1, "&B$18)&$A$17,Data!$A$1:$AL$1&Data!$A$2:$AL$2,0))

picture of results