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

Rei*_*eek 4 google-sheets

我试图在INDEX()里面使用公式ARRAYFORMULA().作为一个简单的(无意义)示例,列中包含4个元素A,我希望输入的以下数组公式B1将显示A列中的所有四个元素B:

=ARRAYFORMULA(INDEX($A$1:$A$4,ROW($A$1:$A$4)))
Run Code Online (Sandbox Code Playgroud)

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

当我进入

=ARRAYFORMULA(ROW($A$1:$A$4))
Run Code Online (Sandbox Code Playgroud)

B1,然后我看到所有数字1到4出现在列中B.为什么我的第一个数组公式不像第二个那样扩展相似?

Ada*_*amL 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.