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

如何在Excel中获取指定月份每周首尾工作日(不含周末)

在Excel中提取指定月份的每周工作日区间(排除周六周日)

需求说明

输入指定月份,生成该月内每周的工作日起始与结束日期(自动排除周六、周日),例如输入2024年2月,输出结果为:2月5日 - 2月9日、2月12日 - 2月16日、2月19日 - 2月23日、2月24日 - 2月29日


解决方案(Excel 365/2021+版本)

直接使用数组公式一步到位,无需辅助列:

=LET(
    input_month, A1,
    start_month, EOMONTH(input_month,-1)+1,
    end_month, EOMONTH(input_month,0),
    work_days, WORKDAY.INTL(start_month-1,NETWORKDAYS(start_month,end_month,1),1),
    week_nums, WEEKNUM(work_days,2),
    unique_weeks, UNIQUE(week_nums),
    start_days, XLOOKUP(unique_weeks,week_nums,work_days,,0,1),
    end_days, XLOOKUP(unique_weeks,week_nums,work_days,,0,-1),
    TEXTJOIN("、",TRUE,TEXT(start_days,"m月d日")&" - "&TEXT(end_days,"m月d日"))
)

公式说明

  • input_month:指定月份的单元格引用(可输入该月任意日期,如2024/2/1,或直接输入数字2,Excel会默认当年对应月份)
  • start_month:计算该月份的第一天
  • end_month:计算该月份的最后一天
  • work_days:生成该月所有工作日的数组(自动排除周六、周日)
  • week_nums:为每个工作日标记周数(以周一作为一周的起始)
  • unique_weeks:提取该月工作日覆盖的所有唯一周数
  • start_days:查找每个周数对应的第一个工作日
  • end_days:查找每个周数对应的最后一个工作日
  • TEXTJOIN:将所有工作日区间用顿号连接成最终字符串

旧版Excel兼容方案(无LET/XLOOKUP函数)

如果使用Excel 2019及更早版本,可通过辅助列实现:

  1. 步骤1:生成该月所有工作日
    在B2单元格输入公式,下拉至无结果:
    =IF(WORKDAY.INTL(EOMONTH($A$1,-1),ROW(A1),1)<=EOMONTH($A$1,0),WORKDAY.INTL(EOMONTH($A$1,-1),ROW(A1),1),"")
    
  2. 步骤2:标记每周起始日期
    在C2单元格输入公式,下拉:
    =IF(WEEKNUM(B2,2)=WEEKNUM(B1,2),"",B2)
    
  3. 步骤3:标记每周结束日期
    在D2单元格输入公式,下拉:
    =IF(WEEKNUM(B2,2)=WEEKNUM(B3,2),"",B2)
    
  4. 步骤4:合并区间
    在E2单元格输入数组公式(按Ctrl+Shift+Enter确认):
    =TEXTJOIN("、",TRUE,IF(C2:C100<>"",TEXT(C2:C100,"m月d日")&" - "&TEXT(D2:D100,"m月d日"),""))
    

验证示例

将A1单元格设为2024/2/1,使用上述公式会输出:

2月5日 - 2月9日、2月12日 - 2月16日、2月19日 - 2月23日、2月24日 - 2月29日

完全匹配需求示例。

内容的提问来源于stack exchange,提问作者I'm Geeker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:27:37