1

我正在使用arrayformula寻找累积和的公式:

ARRAYFORMULA(SUMIF(ROW(A1:A10), "<=" & ROW(A1:A10), B1:B10))

我以前使用过arrayformulas,但主要用于简单的算术运算,所以我试图解决这个问题。

我不清楚的原因是我不知道ARRAYFORMULA使用范围或使用标量值的规则是什么。

如果我将它制成表格,它会变成这样:

row 1: SUMIF(ROW(A1:A10), "<=" & ROW(A1), B1:B10))
row 2: SUMIF(ROW(A1:A10), "<=" & ROW(A2), B1:B10))
...
row n: SUMIF(ROW(A1:A10), "<=" & ROW(An), B1:B10))

但这实际上不起作用,因为根据文档ROW,如果不在 an 中使用,则不会那样工作:ARRAYFORMULA

ROW([cell_reference]) if cell_reference is a range more than one cell wide and the formula is not used as an array formula, only the numeric value of the first row in cell_reference is returned.

查看SUMIF它的语法是: SUMIF(range, criterion, [sumrange]).

我是否正确理解规则ARRAYFORMULA是:

  • 如果内部的函数参数ARRAYFORMULA预期为标量(示例中的标准)并且给出了范围,它将在迭代此范围下方的单元格中扩展

  • 如果内部的函数参数ARRAYFORMULA预计是一个范围(范围和总和)并且给出了一个范围,它将将该范围传递给公式

所以,问题是:

使用上面粘贴的公式逐行到底发生了什么,ROW在这方面表现如何?ROW是否“知道”它正在数组公式中使用并且行为不同?

4

0 回答 0