Excel累计求和(running sum):达到目标值时重置求和的简易公式需求
重置式累计求和(达到目标值后重置)
需求说明
对指定列数据进行累计求和,当累计值达到或超过设定的目标值时,重置累计计数器,从当前数据重新开始累加。示例:
- 目标值:35
- 源数据(A列):12、6、10、8、20、10
- 期望结果:12、18、28、8、28、10
解决方案
方法1:辅助列公式(兼容所有Excel版本,简单易上手)
- 将目标值放在固定单元格(例如
B1) - 第一个结果单元格(例如
C2,对应A2的第一个数据)直接输入:=A2 - 下一个单元格(
C3)输入以下公式,下拉填充至所有行:
逻辑:判断上一次累计值加当前数据是否达标,达标则用当前数据重置累计,否则继续累加。=IF(C2+A3>=B$1, A3, C2+A3)
方法2:单数组公式(无需辅助列,适用于Excel 365/2021及以上版本)
在结果起始单元格(例如C2)输入以下动态数组公式,公式会自动溢出所有结果:
=SCAN(0,A2:A7,LAMBDA(a,v,IF(a+v>=B$1,v,a+v)))
SCAN函数负责遍历源数据并维护累计状态,初始累计值为0LAMBDA(a,v)定义每次迭代逻辑:a为上一次累计值,v为当前数据,判断累计加当前值是否达标,达标则重置为v,否则返回累加值
为什么MOD函数不适用?
MOD函数是取余数运算,但重置累计求和的逻辑并非简单取余:比如累计到28+8=36≥35时,需要从8开始重新累计,而非36 mod 35=1,因此MOD无法满足需求。
内容的提问来源于stack exchange,提问作者Samuel John
相关产品推荐
相关产品推荐

