乐于分享
好东西不私藏

Excel里算"上了几天班",一个函数就够了

Excel里算"上了几天班",一个函数就够了

Excel里算"上了几天班",一个函数就够了

发工资的时候,最头疼的事之一就是算工作日——两个日期之间到底隔了多少个上班日?手动数日历?太累了。Excel有一个专门的函数,帮你自动扣除周末和节假日,一秒算出准确天数。

工作日≠自然日,Excel帮你精准区分

很多人遇到这种需求,第一反应是:结束日期减去开始日期

这样算出来的,是"自然日"天数——包含周末、包含节假日。但发工资按的是"工作日",周末和法定假是不算的。

手动去数?一张表几十号员工,每个人的入职日期还不一样,数到眼花都不一定对。

好在Excel早就替你想好了——NETWORKDAYS函数,专门干这个活。

· · ·

NETWORKDAYS:自动排除周末的工作日计算器

NETWORKDAYS,拆开看就是"网络日"(Network Days),翻译成大白话:两个日期之间,有多少个"能上班的日子"。

它的默认逻辑是:自动排除所有周六和周日,只算周一到周五的天数。

函数格式:=NETWORKDAYS(开始日期, 结束日期)就这么简单,两个参数,回车就是结果。比如某员工3月1日入职,3月31日离职:=NETWORKDAYS("2026-03-01", "2026-03-31")→ 返回 23(自动扣除了所有周末)

两个参数,秒算工作日

进阶用法:把节假日也扣掉

工作日还不止周末的问题。春节、国庆、中秋……这些法定假日也不应该算进工作日。

NETWORKDAYS支持第三个参数:节假日列表。你把所有节假日日期放在一个区域里,函数会自动把这些天数也排除掉。

完整格式:=NETWORKDAYS(开始日期, 结束日期, 节假日区域)操作方式:① 在表格空白处(比如F2:F7)列出所有节假日日期② 公式第三个参数选中F2:F7③ 按F4键锁定区域(变成$F$2:$F$7)④ 拖拽填充,公式不会偏移

节假日单独列出,函数自动排除

💡 为什么节假日区域要用绝对引用?因为公式要拖拽填充给每一行员工。如果用相对引用,拖一行区域就偏移一行,节假日引用就全乱了。按F4加$锁住,不管怎么拖,节假日区域始终指向正确位置。

· · ·

六天工作制?NETWORKDAYS.INTL来搞定

问题来了:NETWORKDAYS默认排除的是周六和周日。但有些公司是六天工作制——只休周日

这种情况,NETWORKDAYS就搞不定了,因为它没法改"哪几天算休息"。

这时候需要它的升级版:NETWORKDAYS.INTL(International,国际版)。

它比基础版多了一个参数:"放假模式",用来指定每周哪几天算休息日。

完整格式:=NETWORKDAYS.INTL(开始日期, 结束日期, 放假模式, 节假日区域)第三个参数"放假模式"决定了休息日的安排。

放假模式速查表

模式代码
休息日
适用场景
1
(默认)
周六、周日
标准五天工作制
2
周日、周一
部分中东国家
3
周一、周二
特殊排班
4
周二、周三
特殊排班
5
周三、周四
特殊排班
6
周四、周五
部分伊斯兰国家
7
周五、周六
部分伊斯兰国家
11
仅周日
六天工作制
12
仅周一
特殊排班
17
仅周六
特殊排班

最常用的两个就记住了:代码1 = 双休代码11 = 单休

同一个时间段,五天制和六天制算出来的天数完全不同

实操对比:五天制 vs 六天制

来看一个直观的对比:

假设某员工从3月1日到3月31日在职,期间有3天法定假日。

五天制(双休,代码1)

18

个工作日

六天制(单休,代码11)

23

个工作日

同一个时间段,五天制算出来18天,六天制算出来23天——差了整整5天。因为周六从"休息日"变成了"工作日"。

工资核算如果搞混了,要么公司亏,要么员工亏。用对函数,数据就不会骗你。

核对无误,数据清清楚楚

· · ·

写在最后

NETWORKDAYS系列函数,可以说是Excel里"算工资必备"的存在。不需要你去翻日历、数格子,更不需要手动排除周末和节假日——函数一步到位。

📌 今日要点回顾:✓ NETWORKDAYS:两个日期间的工作日(默认排除周末)✓ 第三个参数传入节假日区域,可额外扣除法定假✓ 节假日区域务必用F4锁定为绝对引用✓ NETWORKDAYS.INTL支持自定义休息模式(代码11=六天制)✓ 两种函数对比验证结果,确保逻辑正确

下次再有人问你"这个月到底上了几天班",直接甩一个公式过去,比翻日历靠谱一万倍。

— 让Excel帮你数日子,把时间还给更重要的事。—