作者:小阳童鞋
来源:芒种学园(ID:lazy_info)
Hello,大家好,我是小阳,2024年的第一个工作日,又是一年新开始啦!
没想到在节假日里还收到了一位财务小伙伴的提问:怎么快速计算出2024年的所有工作日呢,并且公司还有自己单独的假期?
这个问题说难也不难,说简单也不简单!众所周知,Excel 因为是外国开发的,内置的绝大部分函数都没有适配国内的场景。
比如最常见的,国外习惯使用10K来展示1万,而国内则没有,同样内置计算工作日的函数对于国内各种复杂的假期也不太适用!
于是琢磨了下,找到了可以使用的函数——WorkDay函数,配合辅助列,相对简单解决了这个问题!
先来看结论,2024年的总工作日为 251 天,全年总天数为 365 天。
总计节假日为 114 天,其中 2 月份上班天数最少,只有 18 天,7月份最多,足足长达 23 天!
借着这个话题,和小北一起来学下这个 Excel 中的小众函数——WorkDay吧!
WorkDay函数基础技巧
WorkDay 函数从名字就可以看出这个函数的功能,就是计算相应的工作日!
参数也非常简单,只有 3 个,如下:
=WORKDAY(start_date, days, [holidays])
1.start_date: 一个代表开始日期的日期。
2.days: 之前或者之后不含周末及节假日的天数。
3.holidays: 需要单独排除的节假日日期。
简单来说,就是传入特定的日期+偏移量,然后从偏移的日期开始计算最近的一个工作日是哪一天。
例如传入 2024/1/1,然后偏移量为 1,则结果如下:
这是因为日期偏移为 2024/1/2,然后从 1 月 2 日开始计算最近的一个工作日,所以返回的结果就是 1 月 2 日。
而传入的第 3 个参数就是用来排除特定的节假日,因为固定的函数并不会收录特殊的节假日,只能检测是否为周一~周五。
比如传入2023/12/31,偏移量为 1,来看下不传递节假日和传递的效果:
可以发现,传递特殊节假日后,数据就计算正确了。
简单吧!利用这个功能,我们就可以去检测某一天是正常工作日,还是节假日了。
在 HR 或者财务统计工资薪酬时,特别好用,比如这种效果:
不过最正确的计算,我们还需要把周末调休的部分也算上,比如 2 月 4 日这种,是属于正常工作日,但是没有被计算上。
这里可以考虑将调休的日期也统计出来,然后使用 Countifs 来判断是否在调休范围内,从而来解决这个问题!
我们使用另外一个范围版的函数来演示解决!
NetWorkDays函数使用基础
NetWorkDays 是上面函数的一个扩展版,主要用于计算给定范围日期内的工作日天数,函数的参数也非常简单,也是有 3 个参数:
=NETWORKDAYS(start_date, end_date, [holidays])
1.start_date: 范围的开始日期。
2.end_date: 范围的结束日期。
3.holidays: 需要排除的特定节假日。
前面我们说了,WorkDay 系列函数并不会计算特殊的节假日+调休的情况,所以我们还需要将 2024 年一整年周末的调休调出来,如下:
有 8 天是调休的,然后就可以利用如下的公式来计算每个月的工作日了:
=NETWORKDAYS(A2,B2,$F$2:$F$31)+COUNTIFS($H$2:$H$9,">="&A2,$H$2:$H$9,"<="&B2)
△左右滑动查看完整公式
效果如下:
简单解释下公式,也就是利用 NetWorkDays 计算每个月排除特殊假期后的工作日天数,得到第 1 个数值。
然后再利用 Countifs 函数,统计调休上班的日期是否在当月内,得到第 2 个数值。将两个数值相加即可得到每个月的正常工作日了~
简单验证下,发现 7 月是因为整月无假期,并且 7 月 1 日恰好为周一,从而导致的工作日天数别特长:
简单吧!其实也不是很难,我又回想起了去年的这张图~
好啦,今天的需求就算完美结束了,你学会了么?下次碰到不知道如何计算工作日的,就可以把这个图甩过去,让他学学看,希望不会被打~
关于「Excel工作日计算」的技巧分享就到这里了,你遇到过团队中的哪些坑呢?评论区可以分享出来呀~
想了解数据处理和信息图表的更多思路与技巧?「Excel实战课,让你的图表会说话」超值 Excel 课程了解一下——