如何用Excel SUMIF按日期汇总多列数据?
解决Excel按日期汇总多列数据的问题
你遇到的问题很常见——SUMIF函数单独使用时,当求和区域是多列范围,它只会返回第一列的匹配求和结果,没法直接一次性输出所有列的汇总值。下面给你几种实用的解决方法,覆盖不同版本的Excel:
先明确你的数据(整理后)
原始数据:
Date Col 1 Col 2 Col 3 Col 4 Col 5 1/5/2017 1 2 2 3 1 1/5/2017 5 3 1 1/5/2017 9 5 5 2/5/2017 10 5 3 11 8 2/5/2017 20 10 3 2/5/2017 6 8 1
预期结果:
Date Col 1 Col 2 Col 3 Col 4 Col 5 1/5/2017 15 10 8 3 1 2/5/2017 36 23 7 11 8
方法1:用SUMPRODUCT(兼容所有Excel版本)
这是最稳妥的传统方法,适合没有动态数组功能的旧版Excel:
- 在目标单元格(比如B10,对应1/5/2017的Col1汇总)输入公式:
=SUMPRODUCT(($A$2:$A$7=A10)*$B$2:$B$7) - 输入完成后按回车,然后横向拖动填充柄到F10,就能自动计算出Col2到Col5的汇总值。
- 原理:用
($A$2:$A$7=A10)生成一个布尔数组(匹配日期的位置为TRUE,否则为FALSE),再乘以对应列的数值数组,最后SUMPRODUCT会自动求和。
方法2:SUMIFS数组公式(旧版需按Ctrl+Shift+Enter)
如果想一次性输出多列结果,可以用数组公式:
- 选中目标区域(比如B10:F10,对应1/5/2017的所有列汇总)
- 输入公式:
=SUMIFS($B$2:$F$7,$A$2:$A$7,A10) - 旧版Excel(2019及以前):按
Ctrl+Shift+Enter完成数组输入;Excel 365/2021:直接按回车即可,公式会自动溢出到选中区域。
方法3:Excel 365动态数组(最便捷)
如果你用的是Excel 365或2021,推荐用BYCOL函数,一次性生成所有列的汇总结果,无需拖动:
在B10单元格输入公式:
=BYCOL($B$2:$F$7,LAMBDA(col,SUMIF($A$2:$A$7,A10,col)))
输入后按回车,公式会自动向右溢出填充Col2到Col5的汇总值,非常高效。
方法4:数据透视表(零公式,可视化操作)
如果不想写公式,数据透视表是最直观的选择:
- 选中原始数据的整个区域(A1:F7)
- 点击菜单栏的「插入」→「数据透视表」,选择放置位置(比如新工作表)
- 在字段列表中:
- 把「Date」拖到行区域
- 把「Col1」到「Col5」依次拖到值区域(默认就是求和,若不是可右键值字段设置为「求和」)
- 瞬间就能得到按日期汇总的所有列数据,后续数据更新后,右键透视表选择「刷新」即可同步结果。
内容的提问来源于stack exchange,提问作者Norman
相关产品推荐
相关产品推荐

