Excel 公式

Excel 怎么算星期几、工作日、到期日

更新于 2026-06-04 · 阅读约 7 分钟

排班表要知道某天是周几、账期要算两个日期之间有几个工作日、合同到期要算 N 个工作日后是哪天——这三件事 Excel 分别对应 WEEKDAYNETWORKDAYSWORKDAY 三个函数。本文逐一讲清用法和易踩的坑,再教你用超级表的公式面板点选完成,或直接让 AI 一句话算出来。


超级表中由日期算出星期/工作日的示意
由日期算星期、算工作日间隔——超级表公式面板或让 AI 算。

算星期几:WEEKDAY 函数

Excel 用 WEEKDAY(日期, 返回类型) 把一个日期换算成数字表示的星期。最常用的写法是:

=WEEKDAY(A2, 2)

第二参数 2 表示「以周一为第 1 天」,返回值 1=周一、2=周二……7=周日,符合中国习惯。

如果你想直接在单元格里显示「星期一」「星期二」这样的中文,不用 WEEKDAY——更简单的办法是把单元格格式设置为自定义 aaaa(四个 a),Excel 就会自动把日期渲染成「星期X」。只是「显示」变了,存储的还是日期值,不影响其他计算。

实例:A2 = 2026/6/4(周四),=WEEKDAY(A2,2) 返回 4;单元格自定义格式 aaaa 后显示「星期四」。

想用 WEEKDAY 的数字再转文字,可以配合 CHOOSE:

=CHOOSE(WEEKDAY(A2,2),"周一","周二","周三","周四","周五","周六","周日")

这样返回的就是可参与文本拼接的字符串,比如放进排班单里显示「6月4日(周四)」。

算工作日间隔:NETWORKDAYS 函数

两个日期之间有多少个工作日(不含周六日),用:

=NETWORKDAYS(开始日期, 结束日期)

比如合同从 2026/6/1 签到 2026/6/30,期间有几个工作日:

=NETWORKDAYS("2026/6/1","2026/6/30")22(已自动排除 4 个周末)。

如果还要排除节假日(端午、国庆等),用第三参数传入一个存放节假日的单元格区域:

=NETWORKDAYS(B2, C2, 节假日!A:A)

「节假日」工作表里每一行存一个节假日日期,NETWORKDAYS 会把这些天也排除掉,得出真实的工作日天数。这对账期计算、排班统计都非常实用。

小提示
NETWORKDAYS 的计算结果包含开始日和结束日当天。如果你希望不含首尾某天,手动加减 1 即可。还有一个变体 NETWORKDAYS.INTL 可以自定义哪些天是「休息日」,适合不是标准周末的排班场景。

算 N 个工作日后的日期:WORKDAY 函数

已知开始日期,往后数 N 个工作日,到期是哪天?用:

=WORKDAY(开始日期, 工作日天数, [节假日区域])

比如合同签订日 A2 = 2026/6/1,约定 30 个工作日内交付:

=WORKDAY(A2, 30) → 自动跳过周末,返回 30 个工作日后的具体日期。

同样,加上第三参数就能同时排除节假日:

=WORKDAY(A2, 30, 节假日!A:A)

返回的是一个日期序列值,记得把单元格格式设为「日期」才能看到可读的日期格式,否则会显示成数字。

实例:A2 = 2026/6/4,=WORKDAY(A2, 10) 会从 6/4 起数 10 个工作日,自动跳过两个周末,返回 2026/6/18

这些函数常见的坑

  • WEEKDAY 第二参数最容易写错。不传或传 1 时是「周日=1、周一=2……」的美式顺序,和中国习惯相反,排班表里一用就错。记住:传 2 才是周一=1 的中国式顺序。
  • 节假日列表要每年手动维护。NETWORKDAYS / WORKDAY 的节假日参数只认你自己在表里填的日期,Excel 不知道当年的法定节假日安排,每年调休方案一出来就得更新这张表。少填一天,结果就会差一两天。
  • WORKDAY 返回的是数字,要设格式。新手经常算出来看到一串五位数,以为公式写错了——其实是单元格格式没设成日期,右键→设置单元格格式→日期就好。
  • NETWORKDAYS 含首尾两端。比如同一天开始和结束,返回 1 而不是 0。如果你的业务逻辑里不含当天,记得 -1。
  • 日期文本问题。如果单元格里存的是「2026年6月4日」这种文本而不是 Excel 日期,这三个函数都不认,要先用 DATEVALUE 或分列转为真日期。
一句话总结痛点
节假日手动维护、参数顺序记不住、格式易出错——这三件事加在一起,让「算个工作日」远比看起来麻烦。超级表提供了更省事的路径。

更省事:超级表公式面板或 AI 一句话算

超级表(TableDI)是一款桌面端高能表格助手,macOS 和 Windows 都支持,离线本地运行、零登录。它有两种路径让你跳过记函数这一步:

路径一:公式面板(点选搭计算,含日期)

  1. 在超级表里打开你的表格,选中要填结果的那一列。
  2. 点击顶部工具栏「公式面板」,在「日期」分类下能找到「算星期」「算工作日间隔」「算 N 工作日后日期」等功能。
  3. 点选对应功能,再用下拉框选择「日期列」「天数列」「节假日列」等字段——公式自动生成,不用自己背参数顺序。
  4. 确认后结果自动填入整列,格式也自动设好。

路径二:AI 处理(一句话算)

  1. 选中包含日期的列,点「AI 处理」。
  2. 输入自然语言指令,比如「根据 A 列日期,在 B 列算出是星期几(中文)」或「根据开始日期和结束日期,算出工作日天数,排除节假日列表里的日期」。
  3. 超级表 AI 自动解析意图、生成公式并执行,把结果写到指定列。

对于需要每年更新节假日列表的场景,在超级表里维护一张节假日表格,配合公式面板关联进来即可,下次更新只改节假日表,计算自动跟着变。想了解更多日期函数的综合用法,可以参考Excel 日期函数完全指南;如果你还需要从身份证里提取出生日期再参与计算,可以看从身份证号提取生日

Excel 公式 vs 超级表:对比一览

对比项Excel 原生公式超级表
算星期几=WEEKDAY(A2,2),参数顺序要记住公式面板点选「算星期」,或 AI 一句话指定
算工作日间隔=NETWORKDAYS(开始,结束,[节假日])公式面板点选字段,自动拼参数
算 N 工作日后日期=WORKDAY(开始,天数,[节假日]),结果要手动设日期格式结果格式自动处理
节假日维护需要自己建表、每年手动更新,函数参数关联维护节假日表后自动关联
不记函数名也能用需要记住函数名和参数顺序AI 描述意图即可,无需记函数

常见问题

WEEKDAY 返回的是数字,怎么显示成中文「星期X」?

有两个办法:一是把单元格格式设为自定义 aaaa,日期会直接显示为「星期一」到「星期日」,这是最简单的方式。二是用 =CHOOSE(WEEKDAY(A2,2),"周一","周二","周三","周四","周五","周六","周日") 把数字转为文本字符串,方便拼进其他公式或文本里。

节假日怎么排除?调休怎么处理?

在 Excel 里新建一张工作表(如「节假日」),A 列逐行填入每个节假日的日期。NETWORKDAYS 和 WORKDAY 的第三参数传入 节假日!A:A 即可排除这些天。调休的工作日(原本是周末但要上班)Excel 函数无法自动处理——函数只知道周六日是休息,不知道调休安排。调休工作日最好另建一列「补班日」,在公式结果里手动修正,或改用超级表 AI 处理告知调休规则。

算自然日(含周末)用什么?WORKDAY 能算自然日吗?

WORKDAY 专门跳过周末,不能算自然日。算自然日直接用日期加减:=A2+30 就是 30 个自然日后的日期。要算两个日期相差多少自然日,用 =B2-A2(结果设为数值格式)。更多日期运算可以参考Excel 日期函数完全指南

算工作日不想每次查函数参数?

免费下载超级表,公式面板点选搭计算,或直接告诉 AI 你想算什么

免费下载(macOS / Windows)