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

Excel技术问询:如何基于另一列计算动态滚动求和?

Excel 基于另一列的动态滚动求和实现方法

根据对应行的「No of days」数值,计算「Daily sales」列从当前行往前数对应天数的滚动求和(包含当前行),以下是三种实用实现方法:

方法1:INDEX+SUM(稳定兼容所有Excel版本)

这是最稳妥的方案,不会因行数不足出现错误值。假设数据从第2行开始:

  • 「Daily sales」列在B列,「No of days」列在C列,结果列在D列
  • D2单元格输入公式:
=SUM(INDEX(B:B, MAX(1, ROW()-C2+1)):INDEX(B:B, ROW()))
  • 下拉填充公式到所有行

公式说明:

  • MAX(1, ROW()-C2+1):确保求和起始行不会小于第1行,避免超出数据范围
  • INDEX(B:B, ...):定位求和区域的起始和结束单元格
  • SUM(...):对指定区域求和

方法2:OFFSET+SUM(兼容旧版Excel,需处理边界)

适合没有动态数组功能的旧版Excel,但需要额外处理行数不足的情况:

  • D2单元格输入公式:
=IFERROR(SUM(OFFSET(B2, -(C2-1), 0, C2, 1)), SUM(B$2:B2))
  • 下拉填充公式到所有行

公式说明:

  • OFFSET(B2, -(C2-1), 0, C2, 1):以B2为基点,向上偏移C2-1行,取高度为C2的单元格区域
  • IFERROR(...):当行数不足(比如前几行的「No of days」大于已有的行数)时,自动求和从第2行到当前行的所有数据

方法3:TAKE+SUM(Excel 365及以后版本,简洁高效)

利用动态数组函数实现极简写法:

  • D2单元格输入公式:
=SUM(TAKE(B$2:B2, C2))
  • 下拉填充公式到所有行

公式说明:

  • TAKE(B$2:B2, C2):从B2到当前行的区域中,提取最后C2个单元格
  • SUM(...):对提取的区域求和,自动处理行数不足的情况

示例验证

假设输入数据如下:

日期Daily salesNo of days结果(动态求和)
2024/1/11001100
2024/1/22002300
2024/1/31503450
2024/1/43002450
2024/1/52503700

使用上述任意方法均可得到表格中标注的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 08:53:32