Excel按年份计算年初至今(YTD)累计值的公式需求及问题
Excel 按年份计算年初至今(YTD)累计值的稳定公式
原公式问题分析
你使用的公式=IF(YEAR(A2)=YEAR(A3);SUM($B$2:B3);B2)存在两个核心问题,导致结果不稳定:
- 固定求和起始行
$B$2,跨年后仍会包含上一年的数据,无法正确重置累计 - 依赖当前行与下一行的年份对比,最后一行因无下一行数据会返回错误判断
稳定解决方案
以下是适配不同Excel版本的可靠公式,在C2单元格输入后下拉填充即可:
1. 通用版(兼容所有Excel版本)
=SUMIF($A$2:A2,YEAR(A2),$B$2:B2)
逻辑说明:通过SUMIF筛选当前行及以上所有与当前行年份相同的记录,对对应B列数据求和。自动实现同年份从首行累计、新年份重置为当前B值的需求,完全匹配你给出的计算规则。
2. Excel 365/2021 动态数组精简版
=BYROW(A2:A18,LAMBDA(r,SUM(FILTER(B2:B18,YEAR(A2:A18)=YEAR(r)*AND(ROW(A2:A18)<=ROW(r))))))
逻辑说明:利用BYROW遍历每一行,结合FILTER筛选同年份且行号不大于当前行的B列数据,一次性生成所有累计值,无需下拉填充。
3. 定位年份首行版
=SUM(OFFSET($B$2,MATCH(YEAR(A2),YEAR($A$2:A2),0)-1,0,ROW()-MATCH(YEAR(A2),YEAR($A$2:A2),0)+1,1))
逻辑说明:通过MATCH找到当前年份在A列首次出现的行号,再用OFFSET定位到对应B列起始位置,求和至当前行,适合需要明确控制累计起始点的场景。
内容的提问来源于stack exchange,提问作者Flems
相关产品推荐
相关产品推荐

