Arrayformula 计算与 row()

Arrayformula calculation with row()

=OFFSET(INDIRECT($A),5+row()-2,4,1,1)

我希望在同一列的所有行中重复上述公式,因此计算将根据 row() 发生变化。我试着像下面这样说,H 列是结果所在的位置。但是 row() 没有跟随,所有结果都只是使用公式行。 $A$4 是我用来输入范围名称的地方。

=ARRAYFORMULA(D3:D&OFFSET(INDIRECT($A),5+row()-3,4,1,1))

我知道我可以把它拖下来,但自动总是更好。在我过度复杂化公式之前,是否有一个简单的解决方案来完成这项工作?

更新: 示例 sheet link https://docs.google.com/spreadsheets/d/1di8a9I0Fv-vuQFDNfV3sPsnWbDuBWTNDYlvUAI5pOCk/edit?usp=sharing

我添加了一个新的 sheet(“Erik Help”),其中包含两个公式,每个公式都会 return 相同的结果:

=IFERROR(OFFSET(INDIRECT("CLASS_"&$A),5+row()-3,4,COUNT(INDEX(INDIRECT("CLASS_"&$A))),1),"NO DATA")

-或-

=IFERROR(QUERY({INDEX(INDIRECT("CLASS_"&$A),,5)},"Select * WHERE Col1 Is Not Null",0),"NO DATA")

D3 公式更好,因为它不依赖于公式所在的行(即,它可以放在任何地方并得到相同的结果)。它更“干净”(即,它没有 INDIRECT 子句的冗余)。如有必要,它也更易于阅读和编辑。