如何在Excel表格中基于另一列的值计算滚动求和?
Excel 按分组实现当前行及之前行的滚动求和
你的问题核心是SUMIFS的条件范围没限定到当前行及以上,原公式里[Item]是整个列的范围,所以会匹配所有相同Item的行,而非仅当前行之前的。下面是几种可行的解决方案:
方法1:修正原SUMIFS公式(兼容所有带结构化引用的Excel版本)
把条件范围改成和求和区域对应的「表头到当前行」的Item范围,公式如下:
=SUMIFS(MyTable[[#Headers],[Value]]:[@Value], MyTable[[#Headers],[Item]]:[@Item], [@Item])
- 原理:求和区域是
MyTable[[#Headers],[Value]]:[@Value](当前行及以上的Value),条件区域同步限定为MyTable[[#Headers],[Item]]:[@Item](当前行及以上的Item),这样只会统计到当前行为止的相同Item的Value之和。
方法2:数组公式(兼容旧版Excel)
如果你的Excel版本不支持自动溢出,用数组公式实现:
=SUM(IF(MyTable[Item]:[@Item]=[@Item], MyTable[Value]:[@Value], 0))
- 输入后按 Ctrl+Shift+Enter 完成数组公式录入(Excel 365/2021无需此操作,自动计算)。
方法3:动态数组公式(Excel 365/2021专属)
利用BYROW和FILTER函数一次性计算整列,无需下拉:
=BYROW(MyTable, LAMBDA(row_data, SUM(FILTER(MyTable[Value], (MyTable[Item]=INDEX(row_data,1))*(ROW(MyTable)<=ROW(row_data))))))
- 原理:逐行遍历表格,对每一行筛选出「Item相同且行号小于等于当前行」的Value,再求和。
内容的提问来源于stack exchange,提问作者Karan
相关产品推荐
相关产品推荐

