我正在使用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
如果不在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
是否“知道”它正在数组公式中使用并且表现不同?