如何在ARRAYFORMULA()中使用INDEX()?

时间:2013-04-22 06:24:32

标签: google-sheets

我想在INDEX()内使用ARRAYFORMULA()公式。作为一个简单(无意义)示例,在A列中包含4个元素,我希望在B1中输入的以下数组公式将显示AB中的所有四个元素1}}:

=ARRAYFORMULA(INDEX($A$1:$A$4,ROW($A$1:$A$4)))

但是,这只会使用B1中的值填充字段A1

当我进入

=ARRAYFORMULA(ROW($A$1:$A$4))
B1中的

,我确实看到所有数字1到4都显示在B列中。为什么我的第一个数组公式不像第二个那样扩展相似?

3 个答案:

答案 0 :(得分:8)

如果数组被用作其参数之一,则INDEX函数不支持对数组进行“迭代”。我所知道的没有这方面的文件;它就是它的本质。所以第二个参数将始终默认为数组的第一个元素,即ROW(A1)。

实现所需要的一个笨拙的解决方法依赖于源数据*旁边存在的第二个相邻列(尽管第二列中的实际值是不重要的):

=ArrayFormula(HLOOKUP(IF(ROW($A$1:$A$4);$A$1);$A$1:$B$4;ROW($A$1:$A$4);0))

或确实类似:

=ArrayFormula(HLOOKUP(IF({3;2;4;1};$A$1);$A$1:$B$4;{3;2;4;1};0))


编辑2015-06-09

*最新版本的Sheets不再需要这样做; HLOOKUP中的第二个参数可以是$ A $ 1:$ A $ 4.

答案 1 :(得分:0)

这里是将vlookup与数组一起使用的提示,这样即使列在公式上的后面移动了,也仍然可以正常工作。...

通常,将vlookup配置为仅读取2列并返回第二列。只需输入所需的2列即可,而无需输入范围和列索引。

示例:

替换以下公式,如果移动列,该公式将失败

=arrayformula( vlookup(C:C, booking!$A:$E ,5 ,false) )

具有此公式,即使移动了列,该公式也将继续起作用

=arrayformula( vlookup(C:C, {booking!$A:$A,booking!$E:$E} ,2 ,false) )

答案 2 :(得分:0)

注意,您还可以使用vlookup模拟索引功能。

示例:

R:R列包含用于在列预订中查找数据的行索引号!$ A:$ A

=arrayformula(vlookup(R:R ,arrayformula({row(booking!$A:$A), booking!$A:$A}),2 , false))

这是一个嵌套数组,因此分阶段进行测试可能会有所帮助,例如仅是一个示例的内部部分,例如第10行的return条目:

=vlookup(10 ,arrayformula({row(booking!$A:$A), booking!$A:$A}),2 , false)