乐于分享
好东西不私藏

Excel算工期别再数手指了,一行公式排除周末和节假日

Excel算工期别再数手指了,一行公式排除周末和节假日

上周四下午三点半,我坐在工位上盯着屏幕发呆。

领导刚丢过来一句话:"这个项目 45 个工作日内交付,你算一下 deadline 是哪天。"我当时手边没日历,就打开 Excel 开始数。周一、周二、周三……数到第 15 天的时候,突然想起来上周请了一天假,又得从头来。

你别笑。这种事我干过不止一次。

后来我带的一个实习生,看我在那数日子,默默发了个公式过来。两秒出结果。我当时真的有种"这些年白活了"的感觉

说白了, Excel 算日期这种事,我带过的 8 个实习生里, 7 个还在手动数。但 Excel 里有专门干这活的函数,一行公式就搞定。


NETWORKDAYS :算两个日期之间有多少个工作日

这个函数干的事很简单——你告诉它开始日期和结束日期,它自动排除所有周末,给你一个工作日天数。

公式长这样:

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

比如你要算 2026 年 6 月 1 日到 6 月 30 日有多少个工作日:

=NETWORKDAYS("2026-6-1", "2026-6-30")

结果是 22 天。周末自动扣掉了。

但关键是第三个参数

大多数人不知道, NETWORKDAYS 还能排除节假日。你只需要把节假日日期列在一个区域里,然后作为第三个参数传进去:

=NETWORKDAYS("2026-6-1", "2026-6-30", E2:E5)

假设 E2 到 E5 里放了端午节那几天的日期,公式会自动把这些也扣掉。

这个坑我替你踩过了——我之前在一个项目里,用 NETWORKDAYS 算出 45 个工作日的 deadline ,但忘了把国庆假期加进去。结果交付那天客户说"你们不是说 45 个工作日吗",我才发现少了 7 天。从那以后,我每次都会把法定假日单独列一列。


WORKDAY :反向操作,从开始日期往后推 N 个工作日

NETWORKDAYS 是"给你两个日期,算中间有多少天"。 WORKDAY 是反过来——"从某天开始,往后推 N 个工作日,是哪天"。

回到开头那个场景。领导说 45 个工作日交付,今天是 6 月 26 日。你只需要:

=WORKDAY("2026-6-26", 45)

结果直接告诉你 deadline 是 2026 年 8 月 27 日。

加上节假日排除:

=WORKDAY("2026-6-26", 45, E2:E10)

E2:E10 里放国庆、中秋等假期日期,公式会自动跳过这些天。

有意思的是, WORKDAY 还能往回推。你用负数就行:

=WORKDAY("2026-6-26", -10)

这会告诉你 10 个工作日之前是哪天。倒推 deadline 的时候特别好用。


实战:工期管理表怎么做

光会公式不够,你得把它放进一张表里用。我给你一个我用了三年的模板。

假设你有一张项目管理表, A 列是项目名, B 列是开始日期, C 列是工期(工作日天数)。

在 D 列写公式,自动算 deadline :

=WORKDAY(B2, C2, $F$2:$F$20)

F2:F20 是节假日区域,用绝对引用锁住,往下拖就行。

在 E 列写公式,自动算剩余工作日:

=NETWORKDAYS(TODAY(), D2, $F$2:$F$20)

每天打开表格,剩余天数自动更新。

你琢磨一下,这张表做出来,领导问你任何一个项目的进度,你扫一眼就能报数。不用翻日历,不用掰手指,不用在那"嗯……大概还有两三周吧"。

对了,还有个进阶用法。如果你要算的不是自然日,而是只算工作日的某个时间段内的任务安排,比如"每周一三五开会,连续开 6 周",你可以用 WORKDAY.INTL 配合自定义周末参数。不过这个比较复杂,下次单独写一篇。


容易踩的坑:日期格式

说实话,这两个函数本身不难。难的是日期格式。

我见过太多人把日期写成"6 月 26 日"或者"2026.6.26"这种文本格式。公式直接报错。 Excel 认的日期格式是"2026/6/26"或者"2026-6-26",或者直接用 DATE 函数:

=DATE(2026, 6, 26)

怎么判断一个单元格是不是真正的日期?选中它看右下角。如果显示的是数字(比如 46138 ),那就是真日期。如果还是"6 月 26 日"这种文字,那就是文本,公式会出问题。

还有一种情况更隐蔽。你从别的系统导出来的数据,看着像日期,其实每个单元格前面都藏着一个空格。这种情况你得先用 TRIM 函数清一遍,再算。

=NETWORKDAYS(TRIM(B2), TRIM(C2))

还有一个小细节。 WORKDAY 和 NETWORKDAYS 默认只排除周六周日。如果你公司是单休(只休周日),那得用另一个版本:

=NETWORKDAYS.INTL(开始日期, 结束日期, 11)

最后那个 11 是"只排除周日"的意思。 Excel 里有十几种周末模式可以选,你在公式提示框里能看到所有选项。


一个提醒

用对一个公式,比加三天班管用

我见过太多人花半小时在那数日子、翻日历、算工期。不是他们不努力,是他们不知道有更省力的办法。

今天这两个公式, WORKDAY 和 NETWORKDAYS ,你花 5 分钟学会,以后每次算工期都能省 10 分钟。一个月算 10 次就是 100 分钟,一年下来省出的时间够你多喝好几杯咖啡了。

被工期计算折磨过的,点个赞让我知道不是一个人。


标签: Excel 、工期计算、 NETWORKDAYS 、 WORKDAY 、项目管理