Excel多日期区间按年份及近365天统计天数需求
Excel日期统计解决方案
一、多行起止日期按年份拆分统计天数
针对C4:D8的多行起止日期区间,按年份拆分计算各年份内的天数,支持跨年度区间、空单元格留空、预估日期处理:
1. 单年份统计公式(以2023年为例)
在目标单元格输入以下公式,自动计算所有行中属于2023年的天数总和:
=SUMPRODUCT( --(C4:C8<>""), --(D4:D8<>""), MAX(0, MIN(D4:D8, DATE(2023,12,31)) - MAX(C4:C8, DATE(2023,1,1)) + 1) )
- 逻辑:对每一行区间,取该区间与目标年份的交集起始(MAX(区间开始, 年份第一天))和交集结束(MIN(区间结束, 年份最后一天)),计算交集天数;
--(C4:C8<>"")和--(D4:D8<>"")用于跳过空单元格的行。 - 其他年份只需修改DATE函数中的年份参数(如2024年改为
DATE(2024,12,31)和DATE(2024,1,1))。
2. 预估日期处理
如果D列存在类似「预估2024-06」的文本型预估日期,先将其转换为日期格式(提取年月并转为当月最后一天),嵌套公式处理:
=SUMPRODUCT( --(C4:C8<>""), --(D4:D8<>""), MAX(0, MIN(IF(ISNUMBER(D4:D8), D4:D8, EOMONTH(DATE(LEFT(D4:D8,4), MID(D4:D8,6,2),1),0)), DATE(2023,12,31)) - MAX(C4:C8, DATE(2023,1,1)) + 1) )
- 逻辑:用
ISNUMBER判断是否为标准日期,非标准日期则提取年月并转为当月最后一天(EOMONTH函数)。
二、统计「今日回溯365天」范围内的总天数
计算所有区间中落在TODAY()-365到TODAY()之间的天数总和,支持空单元格和跨区间:
=SUMPRODUCT( --(C4:C8<>""), --(D4:D8<>""), MAX(0, MIN(D4:D8, TODAY()) - MAX(C4:C8, TODAY()-365) + 1) )
- 逻辑:对每一行区间,取与回溯区间的交集,计算交集天数后求和;空单元格的行自动被排除。
空单元格单独留空处理
若需公式所在单元格在无有效区间时显示为空,在外层套IF函数:
=IF(SUMPRODUCT(--(C4:C8<>""),--(D4:D8<>"")), 上述统计公式, "")
内容的提问来源于stack exchange,提问作者NancyTigress
相关产品推荐
相关产品推荐

