是否可以使用索引匹配进行数组公式:
例如:
=arrayformula(if(len(A3:A),INDEX('SheetB'!E:E,MATCH(A3:A,'SheetB'!H:H,0))))
如果没有,有没有不涉及google脚本的解决方案?
看来
INDEX
不能返回多个值。不能在里面使用ARRAYFORMULA
。
我知道的唯一解决方案是使用
VLOOKUP
。
请参阅此主题: https://productforums.google.com/forum/#!topic/docs/jVvjbz8u7A8
那里的例子:
=ArrayFormula(VLOOKUP( B12:B15; H2:R32; 1; TRUE))
干杯!
在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预期的那样工作。
我知道这现在已经过时了,但事实证明 INDEX() 现在充当事实上的 ARRAYFORMULA() 。您可以在this googlesheet上看到一个精彩的示例,它展示了如何使用a和index(split())从单元格中提取一组特定的文本。 MK.demo 选项卡提供了如何使用 INDEX() 函数隐含数组公式的视觉效果。
如今,使用 FILTER() 或 QUERY() 函数可以给出 OP 正在寻找的多重 vlookup 类型。
如果您查看 INDEX 函数文档的底部https://support.google.com/docs/answer/3098242?hl=en,它会显示:
如果将行或列设置为 0,INDEX 将分别返回整个列或行的值数组。
因此,只要在 ROW 或 COL 参数中使用 0,就可以在 ARRAYFORMULA 中使用 INDEX。然后它就会向下填充。
我不确定它是否会起作用,但我在 ARRAYFORMULA 中的 INDEX(...) 之前做了一个“IF(ISBLANK()),它一路下降