Google Sheets:同一列实现不同物品的动态累计求和
Google Sheets 按物品分组实时累计求和方案
高效解决方案公式
在「累计求和」列的第一个数据单元格(如D2)输入以下公式:
=ArrayFormula(IF(B2:B="",,SUMIF(B2:B&ROW(B2:B), "<="&B2:B&ROW(B2:B), C2:C)))
公式说明
- 分组逻辑:通过
B2:B&ROW(B2:B)为每一行生成「物品名称+行号」的唯一标识,确保仅对同一物品且行号不大于当前行的记录求和,实现按物品实时累计 - 空行处理:
IF(B2:B="",,)会自动跳过名称列为空的行,避免生成无效的累计值 - 性能优势:相比嵌套
IF的单物品求和公式,该数组公式仅需一次计算即可覆盖所有物品,在大数据集下运行速度更快
替代优化方案(使用SCAN+LAMBDA)
如果需要更灵活的自定义逻辑,也可以用SCAN结合分组筛选:
=ArrayFormula(IF(B2:B="",,BYROW(ROW(B2:B),LAMBDA(r,SUM(FILTER(C2:C, B2:B=INDEX(B:B,r), ROW(B2:B)<=r))))))
这个方案通过BYROW遍历每一行,对当前行及之前的同物品数量求和,逻辑更直观,适合需要扩展其他条件的场景。
内容的提问来源于stack exchange,提问作者Alessandro Piccolin
相关产品推荐
相关产品推荐

