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标签。
在范围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
版本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)
有一些范围可以进一步缩小当前在整行中设置的索引范围。