【发布时间】:2021-05-06 04:18:15
【问题描述】:
我有一个可能包含数百列的工作表,我正在尝试从中创建较小的报告。
我创建了一个动态 vlookup 来构建表格,但结果很慢,我正在寻找更好的解决方案。
[Sheet1] B2 示例公式:
=VLOOKUP($A2,IF({1,0},INDIRECT(ADDRESS(1,MATCH($A$1,Data!$1:$1,0),1,,"Data")&":"&ADDRESS((MAX((Data!$A:$A<>"")*ROW(Data!$A:$A))),MATCH($A$1,Data!$1:$1,0),1)),INDIRECT(ADDRESS(1,MATCH(B$1,Data!$1:$1,0),1,,"Data")&":"&ADDRESS((MAX((Data!$A:$A<>"")*ROW(Data!$A:$A))),MATCH(B$1,Data!$1:$1,0),1))),2,0)
[data] sheet 有被拉取的数据。
[Sheet1]第 1 行包含与 [数据] 第 1 行标题匹配的标题
[Sheet1]第 1 列包含查找值
[数据]
| ID | First | Last | ID2 | ID3 |
|---|---|---|---|---|
| 1 | First 1 | Last 1 | 101 | 301 |
| 2 | First 2 | Last 2 | 102 | 302 |
| 3 | First 3 | Last 3 | 103 | 303 |
[sheet1]
| id | Last | First | id2 |
|---|---|---|---|
| 1 | Last 1 | First 1 | 101 |
| 3 | Last 3 | First 3 | 103 |
【问题讨论】:
-
我可能遗漏了一些东西,但 INDEX 在这里似乎很完美,对于 Sheet1!B2:
=INDEX(data!$A:$E,MATCH($A2,data!$A:$A,0),MATCH(B$1,data!$1:$1,0)) -
是的,无缘无故过于复杂。必须将 ,MATCH(B$1,data!$1:$1,0)) 调整为 ,MATCH(B$1,data!$1:$1,0)-1) - 假设因为行匹配是 b:b
标签: excel excel-formula match vlookup