求助修改Excel公式:按年月拆分计算两日期间各月天数
跨年度分年月统计日期区间天数的修正公式
针对原公式跨年度时汇总同月份天数的问题,修改后可同时匹配年份和月份,实现按具体年月拆分统计:
修正后的公式
=SUMPRODUCT(--(YEAR(ROW(INDIRECT($A2 & ":" & IF($B2="",TODAY(),$B2))))=YEAR(C$1)),--(MONTH(ROW(INDIRECT($A2 & ":" & IF($B2="",TODAY(),$B2))))=MONTH(C$1)))
关键调整说明
- 新增
YEAR(生成的日期序列) = YEAR(表头日期)的判断,和原有的月份判断结合,确保只统计对应年份+月份的天数,不会跨年度累加同月数据 - 保留原公式中「结束日期为空时自动取当前日期」的逻辑,适配未完成的日期区间
使用注意事项
- 表头单元格(如C1、D1)必须是日期类型值:比如输入
2024/1/1,可通过单元格格式设置为yyyy年mm月或yyyy-mm来显示成易读的年月格式,不能用纯文本(纯文本会导致YEAR/MONTH函数无法识别) - 若日期区间跨度极大(超过Excel行上限1048576天),此公式会失效,可改用更高效的区间交集计算逻辑:
这个公式无需生成日期序列,直接通过计算区间交集得到天数,性能更优且无跨度限制=MAX(0,MIN(IF($B2="",TODAY(),$B2),EOMONTH(C$1,0))-MAX($A2,C$1)+1)
内容的提问来源于stack exchange,提问作者Victor Sundelin
相关产品推荐
相关产品推荐

