如何根据单元格值将地址传递给 Vlookup (Google Sheets)

How to pass addresses to Vlookup based on cell values (Google Sheets)

这让我很困惑,所以我希望知道正确功能的人可以帮助我。

我正在尝试执行 VLOOKUP,但我想根据列中的值传递范围。

范围与公式所在的 sheet 不同,我希望通过查找 forumla 所在列顶部的值来确定范围的起始列。

例如,在附图中,'Dashboard' sheet 的 A 列为 Sheet,顶行的顶行有 Widgets 和 Sprockets。

我希望公式是搜索键“总计”的查找,return 它旁边的单元格中的值。我希望范围从 A 列中指定的 sheet 开始,而列的值与公式所在列顶部的值匹配。

所以我的公式看起来像

=VLOOKUP("Total",<INSERT RANGE HERE>,2)

不胜感激。

Link 到 Google Sheet:

https://docs.google.com/spreadsheets/d/1H5At3gHeTQUm6PWqeA7MT5xcm5RJ38NK6LyhSWUeaZY/edit?usp=sharing

感谢 Stack Overflow 社区

我相信这就是您要找的。

在仪表板上 sheet 输入这些公式:

C3:

=vlookup("Total", indirect($A3&"!C1:D"),2)

D3:

=vlookup("Total", indirect($A3&"!C1:F"),4)

然后您可以 select C3:D3 并向下拖动以自动填充。我尝试使用 arrayformula 但它没有用,但我可能做错了

还要确保更改“位置 1”和“位置 2”以与 sheet 名称完全匹配。

编辑:我刚看到你的截图。这些公式也可以放在 C2 和 D2 中,我只是把它们放在 sheet 名称旁边,以便跟踪我必须做的事情。


编辑回复评论: 这是我能找到的最接近您要查找的内容。

C3:
=vlookup("Total", indirect($A3&"!C1:"&ADDRESS(ROW(INDIRECT($A3&"!$C50")),COLUMN()+1)),2)

D3:
=vlookup("Total", indirect($A3&"!E1:"&ADDRESS(ROW(INDIRECT($A3&"!$E50")),COLUMN()+1)),2)

同样,可以毫无问题地拖动和自动填充这些列。


I have the following formula that can be pasted onto the dashboard C3 cell, and then copied across: =address(1,match(C,indirect($A3&"!1:1"),0),,,$A3) This will give me the address I want from the Sheet I am trying to reference, i.e. Position01!$C Also, If I use the following formula, I get the value I want as a result: =offset(Position01!$C,7,1,1,1) However, If I try to combine the two, I get the error 'Argument must be a range'. =offset(address(1,match(C,indirect($A3&"!1:1"),0),,,$A3),7,1,1,1)

将第一个公式放在 OFFSET 中时,您需要在第一个公式前面添加 INDIRECT ,以便它读取结果地址作为范围而不是字符串:
=offset(INDIRECT(address(1,match(C,indirect($A3&"!1:1"),0),,,$A3)),7,1,1,1)

使用:

=INDEX({VLOOKUP("Total", Position01!C:F, {2, 4}, 0);
        VLOOKUP("Total", Position02!C:F, {2, 4}, 0)})


更新:

如果您的项目包含 24 行但列数未知,那么您可以使用范围:

Position01!C1:24                                   (instead of Position01!C:F)

然后 return 每一栏你可以做:

COLUMN(Position01!C1:1)-1                          (instead of {2, 4})

或者如果您想 return 每第二列:

FILTER(COLUMN(Position01!C1:1)-2, MOD(COLUMN(Position01!C1:1), 2)=0)  

                                                   (instead of {2, 4})