ARRAYFORMULA将前一行单元格相加

时间:2015-05-30 10:07:37

标签: google-sheets array-formulas

我有这样的数据表。

Column--    |C1|C2|C3|Total|
=========================
Row--1      | 0| 0| 0|  100| (I will have some pre calculated value for total column which is not sum of the columns in this row)

Row--2      |10|20|30|  160| (sum of previous row =100+current row (10+20+30) = 160)

Row--3      | 1| 2| 3|  166|

Row--4      | 4| 5| 6|  181|

今天我正在为每一行使用复制粘贴公式。但是,我想要一个SUM列的数组公式,以便在添加新行时公式将自动生效。

我想要的是,SUM列将包含当前行A到D值和前一行SUM值的总和。

因此,在谷歌电子表格中,我最初只有20行。根据事务我将添加行,所以我想要一个数组公式,以便我的公式甚至可以在添加新行后工作。

添加了示例表

https://docs.google.com/spreadsheets/d/1wlWqdFwgv90s50iP-bXXBHciyualohj610qFiSatcmQ/edit?usp=sharing

3 个答案:

答案 0 :(得分:0)

我想我会寻求一个涉及两个公式的解决方案:

E1中的

,一个处理每行求和的公式;

=ArrayFormula(mmult(filter(A1:D,len(A1:A)), transpose(column(A1:D1)^0)))

然后在F1中:'累积'之前的行:

=ArrayFormula(SUMIF(ROW(A1:A1064),"<="&ROW(A1:A1064),E1:E1064))

(改变范围以适应)

另请参阅:example sheet 1

如果你真的需要一个公式的解决方案,你可以尝试:

=ArrayFormula(if(len(A1:A1064), if(row(A1:A1064)=1, mmult(A1:D1, transpose(column(A1:D1)^0)),if(A1:A1064,mmult(transpose(if(transpose(row(A1:D1064))>=row(A1:D1064),A1:A1064+B1:B1064+C1:C1064+D1:D1064, 0)),row(A1:A1064)^0),)),))

另见example sheet 2

答案 1 :(得分:0)

阵列累积和的另一种方法:

=ArrayFormula(SUMIF(IF(COLUMN(A1:D1),ROW(A2:A)),"<="&ROW(A2:A),A2:D))

答案 2 :(得分:-1)

试试这个example sheet
只需将其放在 E 的第一行:

=SUM(A2:D2)

然后:

=IF((COUNTA(A3:D3)>1),SUM(A3:D3)+E2,"")

并将其拖动到2000多行。 它是在示例表中为您完成的。如果您在行中添加新数据,您将获得所需的内容。