使用ARRAYFORMULA获取相对单元格引用?

时间:2019-08-20 00:55:41

标签: if-statement google-sheets offset google-sheets-formula array-formulas

使用ArrayFormula在几个不同的(连续的)位置重复相同的公式-对吗?

我想做的是使用OFFSET获取位于相对相对于当前 ArrayFormula单元格的单元格的值。

因此,例如,ArrayFormula中的每个单元格应该能够如下所示在其左侧单元格的值(假设ArrayFormula从A2到A20)

=ArrayFormula(offset($A$2:$A$20, 0, -1 , 1, 1))

这不起作用-它仅显示ArrayFormula中所有单元格的A2左侧单元格的值。

我该如何进行这项工作?任何形式的基于位置的相对集合都可以,我什至尝试过indirect("R[0]C[-1]", FALSE)indirect(address(row(),column()-1)),但两者的结果相同。


可以在以下位置找到我要达到的目标的示例:https://docs.google.com/spreadsheets/d/1qfGuiTLxPfUCjFh6tVtgofUNYvFm5jpqry--uxHEmaI/edit?usp=sharing

在此示例中,我尝试使用OFFSET来获取3个值的范围,该值从当前单元格的一个向上和左侧的单元格开始,以一个向下,一个左侧的单元格结束。然后,我尝试获取该范围的COUNTA。

Data列包含空单元格和非空单元格的混合。列Formula包含我的ArrayFormula。 Expectation列包含静态值,这些静态值是左侧列中各个单元格的正确值。

如您所见,Formula中的所有单元格都输出3,这是B2的正确值。

(请注意,在本示例中,我在公式的开头添加了if(row(A2:A29),,以强制ArrayFormula工作)

1 个答案:

答案 0 :(得分:1)

=ARRAYFORMULA(IFERROR(
  IF(INDIRECT("A1:A"&MAX(IF(A:A<>"", ROW(A:A), )))<>"", 1, )+
 {IF(INDIRECT("A2:A"&MAX(IF(A:A<>"", ROW(A:A), )))<>"", 1, ); ""}+
 {IF(INDIRECT("A3:A"&MAX(IF(A:A<>"", ROW(A:A), )))<>"", 1, ); ""}))

0