原创作者 祝洪忠 转自Excel之家ExcelHome
小伙伴们好啊,前几天有关部门刚刚公布了2020年的全年公休放假安排,咱们来看看:
除了假期之外,还有很多的的调休上班时间,真是让人欢喜让人忧啊。
最头疼的,估计应该是薪酬HR们了,因为很多时候,要计算指定时间段的应出勤天数,还必须要考虑这些假期和调休,该怎么算呢?
今天老祝就和大家一起来看看,在调休情况下计算工作日天数。比方说,要计算每个月的工作日天数。
因为每年的公休都不固定,微软看了也是蒙圈,所以咱们首先要把公休日期和调休日期做一个对照表。
如下图所示,F列是放假时间,G列是调休上班时间。
接下来,咱们就可以在C2单元格中写公式了:
=NETWORKDAYS(A2,B2,F$2:F$28) COUNTIFS(G$2:G$28,">="&A2,G$2:G$28,"<="&B2)
这样就计算出每个月的工作日天数了。
如果要计算任意两个日期之间的工作日天数,只要修改一下A列和B列的起止日期就OK。
公式看起来有点长,其实咱们把他拆分成两部分就容易理解了:
先说这部分:
=NETWORKDAYS(A2,B2,F$2:F$28)
NETWORKDAYS函数用于计算两个日期之间,去除周末和法定节假日的工作日天数。用法为:
=NETWORKDAYS(开始日期,结束日期,需要排除的法定节假日)
把这个用法套到上面的公式里,A2是开始日期,B2是结束日期,而F$2:F$28单元格区域则是要排除的法定节假日。
刚刚这部分,是没有考虑到调休这种特殊情况的。而计算调休的就是下面这部分公式了:
COUNTIFS(G$2:G$28,">="&A2,G$2:G$28,"<="&B2)
COUNTIFS函数的作用是用来统计符合多个条件的个数,这里第一组条件是G$2:G$28,">="&A2,第二组条件是G$2:G$28,"<="&B2。
就是以对照表中的调休日期为统计区域,看看这个区域中的日期有多少个大于等于A2的开始日期,并且小于等于B2的结束日期。说白了,就是看看从开始日期到结束日期这个阶段中,有几天是需要调休上班的。
把前面计算出的去掉法定节假日的工作日天数,加上这个要调休上班的天数,就是实际的工作日天数了。
怎么样,我说明白了吧?