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