使用带有索引匹配的数组公式

问题描述 投票:0回答:6

是否可以使用索引匹配进行数组公式:

例如:

=arrayformula(if(len(A3:A),INDEX('SheetB'!E:E,MATCH(A3:A,'SheetB'!H:H,0))))

如果没有,有没有不涉及google脚本的解决方案?

arrays google-sheets formula
6个回答
8
投票

看来

INDEX
不能返回多个值。不能在里面使用
ARRAYFORMULA

我知道的唯一解决方案是使用

VLOOKUP

请参阅此主题: https://productforums.google.com/forum/#!topic/docs/jVvjbz8u7A8

那里的例子:

=ArrayFormula(VLOOKUP( B12:B15; H2:R32; 1; TRUE))

干杯!


4
投票

使用XLOOKUP

=ARRAYFORMULA(XLOOKUP(K2:K,R2:R,S2:S))

使用

XLOOKUP
,您可以在一列中查找搜索词,并返回另一列中同一行的结果,无论返回列位于哪一侧


0
投票

在OP的具体情况下,实际上可以将

VLOOKUP
用于其预期目的,作为
MATCH
的替代品:

=arrayformula(if(len(A3:A),VLOOKUP(A3:A,{SheetB!E:E,SheetB!H:H},2,false)))

在尝试使用

INDEX
检索多个值的一般情况下,可以将其替换为
VLOOKUP
SEQUENCE
的组合:

=arrayformula(VLOOKUP(A:A,{SEQUENCE(rows(B:B)),B:B},2,true))

做了本来可以完成的事情

=arrayformula(INDEX(B:B,A:A))

如果后者如OP预期的那样工作。


0
投票

我知道这现在已经过时了,但事实证明 INDEX() 现在充当事实上的 ARRAYFORMULA() 。您可以在this googlesheet上看到一个精彩的示例,它展示了如何使用a和index(split())从单元格中提取一组特定的文本。 MK.demo 选项卡提供了如何使用 INDEX() 函数隐含数组公式的视觉效果。

如今,使用 FILTER() 或 QUERY() 函数可以给出 OP 正在寻找的多重 vlookup 类型。


0
投票

如果您查看 INDEX 函数文档的底部https://support.google.com/docs/answer/3098242?hl=en,它会显示:

如果将行或列设置为 0,INDEX 将分别返回整个列或行的值数组。

因此,只要在 ROW 或 COL 参数中使用 0,就可以在 ARRAYFORMULA 中使用 INDEX。然后它就会向下填充。


-1
投票

我不确定它是否会起作用,但我在 ARRAYFORMULA 中的 INDEX(...) 之前做了一个“IF(ISBLANK()),它一路下降

© www.soinside.com 2019 - 2024. All rights reserved.