编按:日常工作中,经常有需要计算两个时间点之间的工作日天数的问题。这类问题我们有两个可以选择的函数——NETWORKDAYS 和NETWORKDAYS.INTL。对这两个函数还不是很熟悉的同学赶紧和我们一起学习一下吧!
计算工作天数经常会遇到4个情景,一起来看看吧!
情景1:排除周六周日
计算不同的人员,进入到离开项目的工作天数。
这时候我们可以用这个函数:
=NETWORKDAYS(起始日期,结束日期,[节假日])
因为这里没有节假日,我们可以不用写第三参数,公式如下:
输入公式后,双击往下填充就好了。
情景2:有节假日
如果在项目进行期间,某些日期因为特定的原因,没有开工,要把这些日期继续排除了,我们可以把这些日期写入第三参数。
假设A列的这些日期,是不需要计算工作天数的日期,我们就可以写入如下公式:
注意:第三参数的A2:A5单元格需要绝对引用。
情景3:周末不是周六,周日
有的小伙伴会提出这样的问题,如果我们不是周六周日休怎么办?
这个时候,我们要重新引入一个函数,这个函数它比NETWORKDAYS多一个选项,可以选择周末的类型,一起来看一下。
=NETWORKDAYS.INTL(起始日期,结束日期,[周末类型],[节假日])
这个不用去记忆,我们在写公式写到第三参数的时候,会出现提示,如下图的效果:
我们可以点选,或者直接输入数字作为第三参数,如果我们是只有星期日休息,那就写入11,作为第三参数。再把A列的节假日也写上,那完整的公式就是:
=NETWORKDAYS.INTL(D2,E2,11,$A$2:$A$5)
情景4:不规则的作休
有小伙伴又提出这样的问题:我们放的大小星期怎么办?或者我们是做三休一怎么办?
其实,即使你是按照国家法定的来作休的,你按照上面的公式也不会得到正确的结果。为什么呢?因为我们的节假日里面,比如端午,五一,清明,国庆,春节好多时候都要调休。所以,咱们还得另外想办法。
我们的思路是这样的:
这个函数=NETWORKDAYS.INTL(起始日期,结束日期,[周末类型],[节假日])
第三参数的周末类型这里,我们就选择不要周末,每天都上班这种。而把所有的周末,包括放假,停工等等日期,全部放在一个列表里面,通过第4参数来排除这些日期,这样排除的就是一个准确无误的日期。
我们整理了2022年1-12月的,以及全年的国家法定节假日列表,放在了一个表中,供不同情景下的使用需要。
排除日期的问题解决了,还有一个问题就是:如果写第三参数的每天都上班,怎样表示?这里我们可以用“0000000”。就是双引号加上7个0来表示,0表示工作,1表示休息。如果你是周三,周四休,第三参数可以写成“0011000”。
0和1哪个表示工作,哪个表示休息,傻傻记不清,怎么办?
你就把那个1看成是休息的时候躺平的你,就像个1,是不是?
当然,如果你的工作是其他的休息模式,有停工期,就自己来整理一份属于你自己的列表。
总之,最后整理好以后,我们的公式是这样的:
=NETWORKDAYS.INTL(D2,E2,"0000000",节假日[2022全年假期])
这里,第四参数,因为我们的假期表做成了超级表,这里是超级表的结构化引用。你也可以使用单元格引用的方式。
好了,以上。
学会了以上的公式,我们才敢说,真正理解和学会了这两个函数的应用。
做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!
发表回复