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

Getting a relative cell reference using ARRAYFORMULA?

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

我想做的是使用 OFFSET 获取相对 相对 定位的单元格的值 current ArrayFormula 单元格。

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

=ArrayFormula(offset($A:$A, 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 起作用)

=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, ); ""}))