Excel计算全年、每月或一段时间内的工作日天数(去除节假日、周末和调休)

如题所述

计算一段日期内的应出勤天数是工作中经常遇到的问题, 不仅需要考虑周末, 还要考虑国家的法定节假日和调休等.

在日常的工作中有以下四种情况:

为了计算上面的四种情况, 需要用到Excel中的两个函数: NETWORKDAYS和NETWORKDAYS.INTL. 接下来首先介绍四种情况的解决方法, 最后介绍两个函数的详细使用方法.

这种情况下, 所有的周六和周日都是休息日, 除周六和周日外的日期都是正常工作日. 这时可以使用NETWORKDAYS函数可以解决.

NETWORKDAYS的使用方法是: NETWORKDAYS(start_date, end_date, [holidays]) , 函数包含三个参数:

计算示例如下

这种情况下所有的周末和指定的节假日是休息日, 其余时间为正常的工作日, 示例如下: C2 单元格的计算公式为: NETWORKDAYS(A2,B2,$E$2:$E$6) , 其中 A2 和 B2 分别表示开始日期和结束日期, 第三个参数 $E$2:$E$6 表示法定节假日.

单休的情况下就不能使用 NETWORKDAYS 函数了, 需要使用另外一个函数 NETWORKDAYS.INTL , 该函数包括四个参数, 分别是:

根据NETWORKDAYS.INTL函数的定义我们可以得到此种情况的解决方案, 需要使用前三个参数. 示例如图所示:
其中前两个参数 A2 和 B2 分别表示开始和结束日期, 第三个参数 "0000001" 表示每周周日是休息日, 其他是工作日. 工作日天数的计算公式就是: =NETWORKDAYS.INTL(A2,B2,"0000001")

这种情况是最复杂的情况, 也是最常见的情况. 如果只考虑节假日, 那么我们只需要使用 NETWORKDAYS 函数就可以解决. 但是涉及调休之后不行了.
所以还是需要使用 NETWORKDAYS.INTL 函数, 但是需要换个思路来解决问题.

按照这个思路, 函数的前两个参数仍然是开始日期和结束日期, 第三个参数定义为 "0000000" , 第四个参数是所有的周末加所有的节假日, 减去调休的日期.

那么下图的例子中, 工作日天数的计算公式就是: =NETWORKDAYS.INTL(A2,B2,"0000000",$E$2:$E$116)

该函数用于计算从指定的开始日期(包含)到结束日期(包含)的工作日的天数, 工作日不包括周末和指定的节假日. 具体的使用方法如下, 详细使用方法参见 官方文档

NETWORKDAYS(start_date, end_date, [holidays])
该函数有三个参数, 每个参数代表的意义如下:

返回两个日期之间的所有工作日数,可以使用参数指定哪天是周末(这对于单休的公司非常有用),也可以指定除周末外的其他节假日。周末和任何指定为假期的日期不被视为工作日。详细使用方法可以参考 官方文档

NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])

该函数有三个参数, 每个参数的解释如下:

字符串是长度为7的0、1组合, 0表示工作日, 1表示周末, 如"0000011"表示周一到周五是工作日, 周六和周日是周末; "0000001"表示周一到周六是工作日, 周日是休息日.
温馨提示:答案为网友推荐,仅供参考