我想在INDEX()
内使用ARRAYFORMULA()
公式。作为一个简单(无意义)示例,在A
列中包含4个元素,我希望在B1
中输入的以下数组公式将显示A
列B
中的所有四个元素1}}:
=ARRAYFORMULA(INDEX($A$1:$A$4,ROW($A$1:$A$4)))
但是,这只会使用B1
中的值填充字段A1
。
当我进入
=ARRAYFORMULA(ROW($A$1:$A$4))
在B1
中的,我确实看到所有数字1到4都显示在B
列中。为什么我的第一个数组公式不像第二个那样扩展相似?
答案 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)