ARRAYFORMULA与SUM或SUMIF?

时间:2017-10-12 13:42:46

标签: google-sheets array-formulas

我正在尝试将ARRAYFORMULASUM (or SUMIF?)一起使用。我基本上想要从C1向下

锁定SUM并始终C1
=ARRAYFORMULA((SUM(C1:C2) + 1)&":"&(SUM(C1:C3)))         IN D3 is this
=ARRAYFORMULA((SUM(C1:C3) + 1)&":"&(SUM(C1:C4)))         IN D4 is this

以下是样本表,下面是可视化的。

Col C为50,20,16等 Col D是2:50,51:70,71:86等。

https://docs.google.com/spreadsheets/d/1DANMNEahYAoYBCQO1BsfXfUrgPj2mVWNKjn7VuYIIyI/edit#gid=0

units   desired_result
50      2:50
20      51:70
16      71:86
8       87:94
2       95:96

如果你能简单解释那些伟大的逻辑。谷歌(一如既往)令人困惑,而且Youtube很有限。

2 个答案:

答案 0 :(得分:1)

要锁定范围,请使用$

=(SUM($C$1:C2) + 1)&":"&(SUM($C$1:C3))

拖动填充。

答案 1 :(得分:1)

这给出了一个接近你想要的结果,但是如果你想在F2中获得2:50并且在163:163中进一步向下,则需要进行一些调整

=arrayformula(if(C2:C="","",sumif(row(C2:C),"<"&row(C2:C),C2:C)+1&":"&sumif(row(C2:C),"<="&row(C2:C),C2:C)))

enter image description here

我认为它应该是相当自我解释的 - 公式的第一部分给出了行数小于当前行的行数的所有行的总和,公式的第二部分给出了所有行的总和大于或等于当前行。稍微有点棘手的是要认识到当SUMIF的标准部分“&lt;”&amp; row(C2:C)本身就是一个数组时,SUMIF将针对每个数组元素单独计算,并在结果输出中给出一个新行阵列。