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

如何在同一单元格中生成扩展范围的Running sum数组,无需逐个指定SUM范围?

如何在同一单元格中生成扩展范围的Running sum数组,无需逐个指定SUM范围?

嘿,这个需求太戳人了——手动写每个SUM的范围不仅麻烦,要是后续要加行数还得改公式,真心闹心!给你几个实用的简洁方案,适配不同Excel版本:

  • 适合Excel 365/2021(支持动态数组)的最优解
    直接用SCAN函数,这就是为累加场景量身定做的,一行搞定:
    =SCAN(0,D4:D6,LAMBDA(a,b,a+b))
    原理超简单:初始值设为0,SCAN会挨个遍历D4:D6里的每个值,把当前值加到之前的累加结果上,自动生成完整的累加和数组,完全不用手动指定每个扩展范围。输入后直接返回{D4, D4+D5, D4+D5+D6}的结果,和你原来的CHOOSE输出完全一致,而且扩展性拉满——以后要加到D10,只要改D4:D6为D4:D10就行。

  • 适合旧版Excel(无动态数组)的数组公式方案
    要是你还在使用不支持动态数组的老版本,用MMULT来实现:
    =MMULT(--(ROW(D4:D6)>=TRANSPOSE(ROW(D4:D6))),D4:D6)
    这个公式需要按Ctrl+Shift+Enter作为数组公式输入(旧版Excel里必须这么操作,不然出不来正确结果)。它的逻辑是生成一个三角矩阵:行号大于等于转置后的行号时返回1,否则0,再用矩阵乘法和原数据相乘,最终得到每个位置的累加和。

  • 为啥你之前的INDIRECT方案不行?
    你之前试的INDIRECT("D4:D"&{4,5,6})只返回第一个值,是因为INDIRECT是易失函数,在数组上下文里它不会自动迭代每个数组元素,只会计算第一个参数对应的范围,所以才只得到SUM(D4:D4)的结果,这种场景下确实不适合用INDIRECT。

备注:内容来源于stack exchange,提问作者Sherman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:04:53