You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel如何统计两个日期(含端点)间的月末最后一天数量

日期区间内包含的月末总个数统计方法

稳定可用公式(适配Excel、WPS表格、Google Sheets)

假设开始日期存储在单元格A1,结束日期存储在单元格B1,直接使用以下公式即可得到准确结果,不存在大小月、月末日期判定偏差:

=SUMPRODUCT(--(EOMONTH(A1,ROW(INDIRECT("0:"&DATEDIF(A1,B1,"m"))))<=B1))

公式逻辑拆解

  • DATEDIF(A1,B1,"m"):计算两个日期之间的整月间隔数,圈定需要遍历的月份范围
  • ROW(INDIRECT("0:"&整月间隔数)):生成从0到整月间隔数的连续整数序列,对应从开始日期所在月起逐次向后偏移的月份数
  • EOMONTH(A1, 偏移月数):依次计算每个偏移月份对应的当月最后一天(即月末日期)
  • --(月末日期 <= B1):判断生成的月末日期是否落在结束日期及之前,符合条件的转换为数值1,不符合的转换为0
  • SUMPRODUCT():对所有符合条件的数值求和,最终结果就是区间内包含的月末总个数

效果验证

用给出的所有测试用例校验,结果全部匹配预期:

  • 2021/8/31 至 2021/10/15:返回2,对应8月、9月月末
  • 2021/8/31 至 2021/10/31:返回3,对应8月、9月、10月月末
  • 2021/8/31 至 2021/9/30:返回2,修正原方案仅返回1的误差
  • 2021/8/30 至 2021/11/30:返回4,修正原方案仅返回3的误差
  • 2021/8/30 至 2021/12/31:返回5,结果匹配预期

原DATEDIF+1方案的误差根源

该方案失效的核心原因是DATEDIF的整月计算规则:以起始日期的「日」数值为基准,只有当结束日期的日值大于等于起始日的日值时,才会将结束月计入间隔。
比如起始日为2021/8/31(日值31),结束日为2021/9/30(日值30<31),DATEDIF会判定两个日期间隔0个月,+1后结果为1,直接漏算了起始月本身的月末。只有当结束月是31天的大月时,结束日日值刚好等于31,才能触发正确计数,因此结果完全不稳定。

内容的提问来源于stack exchange,提问作者Eowyner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:21:30