首页 文章

ARRAYFORMULA将前一行单元格相加

提问于
浏览
1

我有这样的数据表 .

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

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

    在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

  • 0

    数组累积和的另一种方法:

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

  • -1

    试试这个example sheet
    简单地把它放在 E 的第一行:

    =SUM(A2:D2)
    

    然后:

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

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

相关问题