如何计算指定日期区间内,有多少工作日和休息日?
大家好,今天咱们要解决的问题是如何计算给定的一段日期内,正常工作日有多少天,放假时间有多少天?
比如咱们要计算2025年3月份工作日一共有多少天,又有多少天放假,如下图所示:
通过肉眼我们可以数清楚,2025年3月份上班天数为21天,假设周六周日为放假日期,则放假天数为10天,虽然用肉眼可以数清楚,但是容易出错。
今天就来介绍一种函数,NETWORKDAYS.INTL,这个函数既可以用来计算工作日天数,又可以用来计算放假天数。
NETWORKDAYS.INTL函数的参数如下:
接下来咱们从实际例子中来理解:
要计算3月份从1日到31日的上班天数和放假天数,
在上班天数对应的单元格中输入公式:
=NETWORKDAYS.INTL(B2,C2,"0000011")
NETWORKDAYS.INTL函数的第一参数为起始日期,第二参数为结束日期,第三参数指定一周中的周末。此参数可以是数字或文本字符串。如果输入”0”的话代表工作日。1代表的是周末休息日。
比如说我们题目中的这个"0000011",就是表示星期一到星期五是上班时间,周六周日为休息天。如果是1100000,那么就表示周一周二是休息日,其余时间为上班日。
为了方便记忆,可以记忆成是对0的次数进行求和,如果我们要求的是上班天数,那么上班日期为0,休息天日期为1。如果要求的是休息天数,那么休息天为0,上班日期为1。
按照以上的逻辑,再来计算放假天数。周六周日为休息天,我们把周六周日设置为0。
回车之后就可以计算出来放假天数。
如果周一周二为休息天,其余时间为上班日期,再来计算一下放假天数:
这个时候就可以看到休息天只有9天。
总而言之记住一句话就是,就是对0出现的次数进行求和,如果要计算上班天数就把上班日期设置为0,如果计算休息天数。就把休息日设置为0。这样只是为了方便我们记忆,但是在系统中的逻辑是0代表工作日,1代表休息日。
进阶理解:
如果说这个月存在法定假期以及调休的话那又该如何处理呢?
比方说2025年2月份:
1,2,3,4,日为休息日,8日为调休日,要分别计算出2月份的上班天数和休息天数。
先来计算上班天数,在黄色目标单元格中输入公式:
=NETWORKDAYS.INTL(B2,C2,"0000011",B7:B10)+COUNTIFS(C7,C7)
前面已经介绍过NETWORKDAYS.INTL函数的一二三参数,这里着重介绍第四参数:
第四参数为假期,就是除了正常放假之外的日子,2月份的放假日期已经列出来,直接将其选中作为第四参数就可以。
最后在用COUNTIFS函数对调休日期的天数进行计数,在加上调休日期就可以计算出来总共的上班天数。
最后计算放假天数:
用总天数减去上班天数再加1就是放假天数。至于为什么加1,比如说5号减去4号等去4,实际上是5天,所以需要加1。
同样的我们也可以计算出从本日到年底需要上多少天的班以及可以休息的天数。
如下图,本年的放假日期和调休日期已经确定,要每天自动更新还需要上班天数:
在黄色目标单元格中输入公式:
=NETWORKDAYS.INTL(F24,G24,"0000011",B16:B43)+COUNTIFS(F16:F20,">="&F24,F16:F20,"<="&G24)
在开始日期这里要输入TODAY函数,这样每天打开就可以保持自动更新日期。
因为计数条件有文本,所以COUNTIFS函数的第二参数和第四参数要加&符号。
COUNTIFS(F16:F20,">="&F24,F16:F20,"<="&G24)
这样的话每天打开日期就会自动更新,还需要上多少天班,可以休息多久都一目了然。