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

如何在Excel 2016中用非VBA公式计算两日期间每月天数

计算跨月日期区间内各月份的天数(非VBA公式方案)

假设起始日期存于单元格A1(示例:2023/1/5),结束日期存于单元格B1(示例:2023/3/17),以下是两种适配不同Excel版本的解决方案:

方案1:适配所有Excel版本(手动下拉)

  1. 生成月份序列
    在C2单元格输入公式,生成区间内第一个月的第一天:
=EOMONTH(A1,-1)+1

下拉填充单元格,直到生成的月份超过结束日期所在月份(示例中下拉至C4,得到2023/1/1、2023/2/1、2023/3/1)。

  1. 计算对应月份天数
    在D2单元格输入通用公式,下拉填充至所有月份行:
=MIN(EOMONTH(C2,0),B1)-MAX(A1,C2)+1

公式逻辑:

  • MAX(A1,C2):取起始日期与当月第一天的较大值,确定当月统计的起始点
  • MIN(EOMONTH(C2,0),B1):取当月最后一天与结束日期的较小值,确定当月统计的结束点
  • 两者相减加1,得到当月的实际天数

示例计算结果:

  • D2:31-5+1=26(1月天数)
  • D3:28-1+1=28(2月天数)
  • D4:17-1+1=17(3月天数)

方案2:适配支持动态数组的Excel版本(一键生成)

直接用两个动态数组公式,自动生成所有月份和对应天数:

  • 生成月份文本(如“2023年1月”):
=TEXT(SEQUENCE(DATEDIF(EOMONTH(A1,-1)+1,EOMONTH(B1,0),"M")+1,1,EOMONTH(A1,-1)+1,32),"yyyy年mm月")
  • 生成对应天数:
=BYROW(SEQUENCE(DATEDIF(EOMONTH(A1,-1)+1,EOMONTH(B1,0),"M")+1,1,EOMONTH(A1,-1)+1,32),LAMBDA(x,MIN(EOMONTH(x,0),B1)-MAX(A1,x)+1))

注意事项

  • 确保单元格A1和B1为Excel可识别的日期格式,避免文本格式导致计算错误
  • EOMONTH函数为Excel内置函数,无需额外加载工具库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:43:19