跳转至

WORKDAY 函数

函数概述

在 Excel 中,WORKDAY 函数用于按照“工作日”规则对日期进行加减计算:

  • 给定一个开始日期与需要偏移的工作日天数,返回对应的工作日日期
  • 默认将周六、周日视为非工作日。
  • 还可以额外指定节假日列表,这些日期同样会被排除在工作日之外。

常见应用场景:交付日期计算、合同到期日(按工作日)、排期/工期推算、SLA 截止时间计算等。


基础语法

WORKDAY(start_date, days, [holidays])

参数说明

参数 是否必填 类型/形式 含义说明
start_date 必填 日期/日期序列号/可解析的日期文本 起始日期。Excel 会以该日期为基准进行推算。
days 必填 整数(可正可负,可为 0) 需要偏移的工作日天数:正数表示往后推,负数表示往前推,0 表示返回下一个(或本身)工作日逻辑下的结果。
holidays 可选 日期区域或日期数组 需要额外排除的节假日日期列表(不论落在周几,都会被视为非工作日)。

提示:holidays 建议使用一列日期区域(例如 H2:H20),便于维护和扩展。


基础用法示范

下面示例默认周六/周日为休息日,并根据需要引入节假日列表。

示例 1:从某日开始,往后推 N 个工作日

需求:从 2026-01-19 开始,往后推 10 个工作日,得到计划完成日期。

=WORKDAY(DATE(2026,1,19), 10)

解释:函数会跳过周末(周六、周日),返回第 10 个工作日对应的日期。


示例 2:倒推工作日(计算最晚开始时间)

需求:交付日是 2026-02-10,要求提前 7 个工作日启动,求最晚启动日期。

=WORKDAY(DATE(2026,2,10), -7)

解释:days 为负数表示向前倒推工作日。


示例 3:加入节假日列表,排除法定假期

需求:从 2026-01-19 往后推 10 个工作日,但要排除节假日区域 H2:H6

假设 H2:H6 里是以下日期:

节假日(H 列)
2026-01-20
2026-01-23
2026-02-02
2026-02-03
2026-02-04

公式:

=WORKDAY(DATE(2026,1,19), 10, H2:H6)

解释:在跳过周末的基础上,额外跳过 H2:H6 中列出的日期。


示例 4:days 为 0 的用法

需求:如果某日期落在周末或节假日,希望得到下一个工作日

=WORKDAY(A2, 0, $H$2:$H$20)

解释:

  • A2 是工作日且不在节假日列表中,结果通常会与其工作日规则保持一致;
  • A2 是周末/节假日,函数会返回后续的最近工作日。

示例 5:批量计算:每条记录的“预计完成日”

需求:表中每行有“开始日期”和“工期(工作日)”,计算完成日期,并排除节假日。

假设字段如下:

开始日期 工期(工作日) 完成日期(结果)
A2 B2 C2

C2 输入:

=WORKDAY(A2, B2, $H$2:$H$20)

向下填充即可批量得到每条任务的完成日期。


总结

  • WORKDAY 用于按“工作日”推算日期,默认排除周六、周日
  • days 支持正/负,分别用于顺推倒推工作日。
  • holidays 可选但很实用:把法定假期、公司假期维护在一列区域,计算会更贴近真实排期。
  • 如果你的周末规则不是“周六周日”,可以了解扩展函数 WORKDAY.INTL(可自定义周末模式),在更复杂排班场景下更合适。