在 excel 里想把预计完成日期和两个日期之间的跨度一次算清楚,最稳的做法不是只盯着一个函数,而是把 workday 和 datedif 分工用。workday 负责往前或往后推工作日日期,自动避开周末;datedif 负责把两个日期之间差了多少天、多少月、多少年拆出来,方便你回头复核排期、工期或在岗时间是不是算偏了。
这套写法特别适合项目排期、合同履约、请假返岗、采购到货和人事在岗时长这类表。先用 WORKDAY 得出排除周末和节假日后的目标日期,再用 DATEDIF 复核开始日期和结束日期之间的跨度,结果会比手工数日历靠谱得多。
先分清 WORKDAY 和 DATEDIF 各自负责什么
WORKDAY 解决的是“从某个开始日期起,往后推几个工作日以后落在哪一天”,所以它更像排期函数。DATEDIF 解决的是“两个日期之间隔了多久”,更适合做复核、统计和展示。把这两个函数的职责先分清,后面写公式时就不容易一边想算工作日,一边又拿自然日逻辑去套。

如果你现在只想快速得到“7 个工作日后是哪一天”,可以先从最基础的 =WORKDAY(A2,7) 开始练。先让开始日期和工作日天数跑通,再继续往下加节假日范围。
把节假日单独列出来,WORKDAY 才能算得更准
真正做排期时,最容易算错的不是周末,而是法定节假日、公司调休或团队自定义停工日。所以别把节假日写进备注里,最好单独放在一列或一块区域里,让 WORKDAY 直接引用这个范围。以后假期变了,只要改节假日清单,不用整段重写公式。

常见写法就是 =WORKDAY(A2,A3,H4:H14) 这种结构:A2 放开始日期,A3 放推进的工作日天数,H4:H14 放节假日名单。结果出来后,先看返回日期有没有自动避开长假,再批量往下填充。
先用 DATEDIF 核对两个日期相差了多少天
WORKDAY 算出结束日期以后,最好别直接把它当最终结果交出去,而是再用 DATEDIF 做一次反向核对。最基础的是 =DATEDIF(A1,B1,"D"),看两个日期之间相差多少天。这里返回的是自然日天数,特别适合先确认开始日期和结束日期有没有填反,或者整个排期跨度是不是明显超出了预期。

很多人第一次用 DATEDIF 时最容易踩的坑,就是把开始日期和结束日期位置写反,直接报错或得到不合理结果。所以这一步别省,先把差值核清楚,再决定后面要不要继续拆成年、月、日格式展示。
需要展示工期时,再把 DATEDIF 拆成年月日组合
如果这张表不只是自己算,还要给领导、客户或同事看,那么只返回一个总天数通常不够直观。这个时候可以把 DATEDIF 分别拆成 “Y”“YM”“MD”,再拼成“几年几个月几天”的展示格式。这样在人事在岗时长、合同履行周期、试用期统计这类表里,会更容易被看懂。

这里重点不是把公式写得多复杂,而是让最终显示出来的时长不用再靠人去心算。只要展示清楚,后面校对和汇报都会轻松很多。
把 WORKDAY 结果和 DATEDIF 复核结果放在同一行看
一张实用的排期表,最好让开始日期、工作日天数、WORKDAY 推算结果和 DATEDIF 复核结果放在同一行或相邻区域里。这样你一眼就能看出:某项任务理论上几号完成,实际跨度又是不是落在合理区间。尤其是同时管多个节点时,这种并排对照比只留一个结束日期更容易查错。

正式交付前,建议顺手改一组开始日期,再改一组节假日清单做联动测试:看 WORKDAY 返回日期会不会跟着变,再看 DATEDIF 展示的跨度有没有同步更新。只要这两处都能联动,后面不管做项目排期表还是工龄统计表,都能直接复用这套公式框架。


















