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

如何编写公式计算指定日期范围在各对应月份所占天数

日期区间分月占比天数统计实现方案

Excel 公式实现

适用版本:Excel 365 / 2021 及以上(支持动态数组溢出)

  • 假设起始日期存储在 A1 单元格,结束日期存储在 B1 单元格
  • 直接粘贴以下公式到任意空白单元格,即可自动输出所有月份的统计结果:
=LET(
  month_list, EOMONTH(A1, SEQUENCE(DATEDIF(A1, B1, "m")+1, , -1)) + 1,
  month_days, MIN(B1, EOMONTH(month_list, 0)) - MAX(A1, month_list) + 1,
  TEXT(month_list, "mmmm yyyy") & " - " & month_days & "天"
)

示例验证:A1输入1/1/2021、B1输入23/3/2021时,公式会自动溢出三行结果,和需求示例完全一致。

低版本Excel兼容方案

手动输入公式后下拉即可:

  1. 第一行空白单元格(比如C1)输入月份生成公式:=EOMONTH(A$1, ROW(A1)-1) + 1
  2. 相邻单元格(比如D1)输入统计公式:=TEXT(C1,"mmmm yyyy")&" - "&MIN(B$1,EOMONTH(C1,0))-MAX(A$1,C1)+1&"天"
  3. 下拉C、D列公式,直到C列生成的月份超过B1的月份为止。

Python 代码实现

依赖安装(如果未安装相关库)

pip install python-dateutil

完整代码

from datetime import datetime, timedelta
from dateutil.rrule import rrule, MONTHLY
from dateutil.parser import parse

def count_month_days(start_date_str: str, end_date_str: str) -> list:
    # 解析输入的日期(适配日/月/年格式)
    start_dt = parse(start_date_str, dayfirst=True).date()
    end_dt = parse(end_date_str, dayfirst=True).date()
    result = []
    # 遍历区间覆盖的所有月份
    for month in rrule(MONTHLY, dtstart=start_dt.replace(day=1), until=end_dt.replace(day=1)):
        month_first = month.date()
        # 计算当月最后一天
        if month.month == 12:
            month_last = month.replace(year=month.year+1, month=1, day=1).date() - timedelta(days=1)
        else:
            month_last = month.replace(month=month.month+1, day=1).date() - timedelta(days=1)
        # 计算有效区间天数
        valid_start = max(start_dt, month_first)
        valid_end = min(end_dt, month_last)
        days = (valid_end - valid_start).days + 1
        result.append(f"{valid_start.strftime('%B %Y')} - {days}天")
    return result

# 调用示例
print(count_month_days("1/1/2021", "23/3/2021"))

输出结果:['January 2021 - 31天', 'February 2021 - 28天', 'March 2021 - 23天']


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:54:02