你好,我是刘卓。欢迎来到我的公号,excel函数解析。之前和你分享了workday的用法,今天来分享另一个和工作日有关的函数networkdays,它计算两个日期之间的完整工作日数。
-01-
函数说明
networkdays返回两个日期之间的完整工作日数。默认周末是周六和周日。函数语法如下,有3个参数。
NETWORKDAYS(start_date, end_date, [holidays])
第1参数Start_date:是起始日期。起始日期可以小于或大于结束日期,如果大于结束日期,函数返回负值。第3参数Holidays :是节假日。可以是包含日期的单元格区域或常量数组。起始日期是2020/4/14,结束日期是2020/4/19,它们之间的所有工作日数是4天,如下图日历中标黄的那4天。18号和19号是周末,要排除掉。这里要注意的是工作天数包含起始日期,而workday是不包含起始日期的。第2个示例的起始日期大于结束日期,返回的结果是负值。
下面看下有节假日的情况,节假日有2天,分别是17号和20号。这时起始日期2020/4/14到结束日期2020/4/19之间的所有工作日数是3天,分别是14号,15号,16号这3天。17号是节假日要排除,18号和19号是周末也要排除。
1.本月有几个工作日
假如周末是周六和周日,并且不考虑节假日。计算一下本月有多少个工作日。那就是计算月初到月末之间有多少个工作日。所以公式为:
=NETWORKDAYS(EOMONTH(NOW(),-1)+1,EOMONTH(NOW(),0))
EOMONTH(NOW(),-1)+1返回本月月初的日期,也就是起始日期。EOMONTH(NOW(),0)返回本月月末的日期,也就是结束日期。这个题目和上个题目差不多,起始日期是今天,结束日期是月末,求二者之间的工作日。公式为:
=NETWORKDAYS(NOW(),EOMONTH(NOW(),0))
如下图所示,假如周末是双休,计算5月1号到5月15号之间的工作日数。其中节假日是5月1号到5月5号,但是由于51劳动节的假期太长了,所以周末就要上班了,比如5月9号和4月26号,可以参考下图的日历。
如果直接用=NETWORKDAYS(A18,B18,E18:E22)这个公式,计算出来的结果是不准确的。因为它把周末和节假日都给排除了,但是现在有的周末是要上班的,比如5月9号,所以要把上班的周末给补回来。把上班的周末补回来的公式为=COUNTIFS(F18:F19,">="&A18,F18:F19,"<="&B18)。上班的周末的日期必须在起始日期和结束日期的范围内。4月26号虽然也是上班的周末,但不在5月1号到15号的范围内。
=NETWORKDAYS(A18,B18,E18:E22)+COUNTIFS(F18:F19,">="&A18,F18:F19,"<="&B18)
https://pan.baidu.com/s/1JwhNnnpW3aFkB_jAx2t3Cw