如何使用Excel公式按年份分组对E列数值求和?
Excel按年份分组求和的正确方案
你的原公式=SUMIF(B2:B162, YEAR(B2)=2023, E2:E162)无法得到预期结果,是因为SUMIF的条件参数不支持直接用YEAR(B2)=2023这种布尔判断写法,以下是几种可行的解决方法:
方法1:SUMPRODUCT通用写法(适配所有Excel版本)
这个公式可以直接匹配日期列的年份并求和:
=SUMPRODUCT(--(YEAR(B$2:B$162)=2023), E$2:E$162)
如果需要下拉公式自动对应不同年份,把固定的2023换成存放年份的单元格引用(比如G2单元格是2023,G3是2022),公式修改为:
=SUMPRODUCT(--(YEAR(B$2:B$162)=G2), E$2:E$162)
下拉后会自动匹配对应单元格的年份计算求和。
方法2:SUMIFS日期范围写法(计算更高效)
通过指定年份的起止日期来匹配,避免遍历整个列计算年份,性能更优:
=SUMIFS(E$2:E$162, B$2:B$162, ">="&DATE(2023,1,1), B$2:B$162, "<="&DATE(2023,12,31))
同样换成单元格年份引用的版本:
=SUMIFS(E$2:E$162, B$2:B$162, ">="&DATE(G2,1,1), B$2:B$162, "<="&DATE(G2,12,31))
方法3:动态数组写法(仅Excel 365/2021及以上)
如果使用新版Excel,无需手动下拉,可自动生成所有唯一年份的求和结果:
- 先提取所有唯一年份(比如在G2单元格输入):
=UNIQUE(YEAR(B2:B162))
- 在相邻单元格输入求和公式,自动对应所有年份:
=SUM(FILTER(E2:E162, YEAR(B2:B162)=G2#))
内容的提问来源于stack exchange,提问作者Ranvijay Rathore
相关产品推荐
相关产品推荐

