You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用ArrayFormula实现B2:F2行的累积求和(含空值处理)

Google Sheets 用ArrayFormula实现横向累积求和(含空值处理)

要实现B3:F3区域和手动输入=SUM($B2:B2)、=SUM($B2:C2)...完全一致的横向累积求和效果,你之前的公式问题在于SUM在ArrayFormula中会对整个区域求和,而非逐列计算累积。下面提供两种可行方案:

方案1:用MMULT兼容旧版Sheets

=ArrayFormula(IF(B2:F2="","",MMULT(N(COLUMN(B2:F2)<=TRANSPOSE(COLUMN(B2:F2))),N(B2:F2))))

公式说明:

  • COLUMN(B2:F2) 获取B到F列的列号数组(比如[2,3,4,5,6])
  • COLUMN(B2:F2)<=TRANSPOSE(COLUMN(B2:F2)) 生成布尔矩阵,标记「当前列是否在目标列左侧或同一列」,转置后确保横向累积逻辑正确
  • N() 将布尔值转为1/0,让MMULT可以进行矩阵乘法运算
  • MMULT() 通过矩阵乘法,把1/0矩阵和数值行相乘,得到每列的累积和
  • 外层IF判断原单元格为空时输出空值,避免显示无意义的0

方案2:用SCAN(新版Sheets推荐,更简洁)

如果你的Google Sheets支持LAMBDA函数(新版默认支持),可以用SCAN直接实现逐元素累积:

=ArrayFormula(IF(B2:F2="","",SCAN(0,B2:F2,LAMBDA(acc,val,acc+IF(val="",0,val)))))

公式说明:

  • SCAN(0,B2:F2,...) 从初始值0开始,逐个遍历B2:F2的元素
  • LAMBDA(acc,val,acc+IF(val="",0,val)) 定义累积规则:每次把当前值(空值则加0)加到之前的累积结果上
  • 外层IF同步处理原单元格空值的场景,保持输出和原数据空值对应

内容的提问来源于stack exchange,提问作者Osm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 12:54:23