【问题标题】:Overly complicated excel vlookup very slow过于复杂的excel vlookup非常慢
【发布时间】: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


【解决方案1】:

将匹配项放在返回列中:

=VLOOKUP($A2,Data!$A:$E,MATCH(B$1,Data!$A$1:$E$1,0),0)

如果有过滤器,那么:

=FILTER(Data!$B:$E,Data!$A:$A=$A2) 

它会向右溢出值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多