今天教大家计算指定时间范围内的工作日天数,会教一个新函数。
案例:
计算 2021 年 8 月和 10 月共有几个工作日,效果如下图 2 所示。
在给出答案前,我先要介绍一下今天的主角 NETWORKDAYS.INTL 函数。
NETWORKDAYS.INTL 函数详解:
作用:
- NETWORKDAYS 函数虽然也能用于计算工作日,但是 NETWORKDAYS.INTL 不仅能计算两个日期之间的所有工作日数,还能使用参数指示哪些天是周末,以及有多少天是周末。周末和任何指定为假期的日期不被视为工作日。
语法:
- NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
参数:
- start_date 和 end_date:必需;要计算其差值的起始和截止日期。start_date 可以早于或晚于 end_date,也可以与它相同。
- [weekend]:可选;表示介于 start_date 和 end_date 之间但又不包括在所有工作日数中的周末日。weekend 是一个用于指定周末日的周末数字或字符串。
以下是 weekend 每个数字的含义列表:
- [holidays]:可选;一组可选的日期,表示要从工作日日历中排除的一个或多个日期。holidays 应是一个包含相关日期的单元格区域,或者是一个由表示这些日期的序列值构成的数组常量。holidays 中的日期或序列值的顺序可以是任意的。
说明:
- 如果 start_date 晚于 end_date,则返回值将为负数,数量将是所有工作日的数量。
- 如果 start_date 或 end_date 不在当前日期范围内,则返回 #NUM! 错误值。
- 如果周末字符串的长度无效或包含无效字符,则返回 #VALUE! 错误值。
解决方案:
1. 在 C2 单元格中输入以下公式:
=NETWORKDAYS.INTL(A2,B2)
公式释义:
- 计算参数中两个日期之间的工作日;
- 第三个参数省略,默认为周六、日双休
这要是在从前,很多大厂奉行 996,公式就应该如下:
=NETWORKDAYS.INTL(A2,B2,11)
- 加了第三个参数“11”:表示仅休周日
还好国家出手了,996 违法,解救了广大劳动人民。所以还是用回原来的公式。
接下来计算 10 月的工作日,这个情况要复杂一些,因为 10 月有国庆长假,还有各种调休,所以我们先要列出 10 月的所有休息日。
2. 在 E 列列出 10 月的所有假期和休息日。
3. 在 C2 单元格输入以下公式:
=NETWORKDAYS.INTL(A3,B3,"0000000",E2:E15)
公式释义:
- 计算 A3 和 B3 单元格之间的工作日;
- "0000000":表示将一周 7 天全部设置为工作日;
- E2:E15:将这个区间的日期视为休息日
但我个人认为上述公式是非常不友好的,如果我都已经费劲巴拉将所有休息日列出来了,我就有一万种方法算出工作日,何必还需要动用这么高深的公式?
所以,公式用法是公式用法,在实际工作中,要学会动脑,这个案例可以这么思考:
- 国庆节不管怎么腾挪假期,国家总归只给 3 天假,其余都是调休;
- 其中有一天跟 9 月的周末调,所以 10 月总共多放 3+1=4 天
因此 10 月的工作日公式为:
=NETWORKDAYS.INTL(A3,B3)-4
很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。
现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。