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

如何计算两个日期区间内每周的工作日天数?求Excel实现公式

在Excel中计算日期区间内每周的工作日天数

完全可以通过Excel公式实现这个需求,以下分两种场景给出具体方案:

一、Excel 365/2021(支持动态数组)

假设起始日期存于单元格A2,结束日期存于B2,直接在空白单元格输入以下公式,会自动溢出生成所有周的起始日、结束日及对应工作日天数:

=LET(
    start_date, A2,
    end_date, B2,
    first_week_start, IF(WEEKDAY(start_date,2)=1, start_date, start_date-WEEKDAY(start_date,2)+1),
    total_weeks, CEILING((end_date - first_week_start + 1)/7,1),
    week_starts, SEQUENCE(total_weeks,1,first_week_start,7),
    week_ends, MIN(week_starts+6, end_date),
    CHOOSE({1,2,3}, week_starts, week_ends, NETWORKDAYS(week_starts, week_ends))
)

公式说明:

  1. LET函数用于定义变量,简化公式结构
  2. 自动计算区间内第一周的起始日(周一)
  3. 生成所有周的起始日序列,每周间隔7天
  4. 计算每周的结束日(周日,不超过给定的结束日期)
  5. 用NETWORKDAYS计算每周工作日数(默认排除周六周日)

如果需要排除自定义节假日,只需修改NETWORKDAYS部分为:

NETWORKDAYS(week_starts, week_ends, $D$2:$D$10)

其中$D$2:$D$10为你的节假日日期列表区域。

二、旧版Excel(不支持动态数组)

需要手动下拉公式填充,步骤如下:

  1. 计算每周起始日(在C2单元格输入,按Ctrl+Shift+Enter作为数组公式):
=IFERROR(MAX(MIN($A$2+ROW($A$1:$A$100)*7-7,$B$2),$A$2+ROW($A$1:$A$100)*7-8+1),"")
  1. 计算每周结束日(在D2单元格输入,直接下拉):
=IF(C2<>"",MIN(C2+6,$B$2),"")
  1. 计算每周工作日数(在E2单元格输入,直接下拉):
=IF(C2<>"",NETWORKDAYS(C2,D2),"")

下拉填充直到单元格出现空值即可。

自定义周末规则

如果你的周末不是周六周日,可使用NETWORKDAYS.INTL替代NETWORKDAYS,通过第二个参数指定周末规则,例如:

  • 周四周五休息:NETWORKDAYS.INTL(week_starts, week_ends, "0001100")
  • 仅周日休息:NETWORKDAYS.INTL(week_starts, week_ends, "0000001")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 16:32:41