EXCEl

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

2019-01-18  本文已影响0人  EAST4021

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

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

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

1 双休, 不考虑节假日和调休

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

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

计算示例如下

  1. 计算2018-12-03~2018-12-31之间的工作日天数, 就可以使用公式NETWORKDAYS("2018-12-3", "2018-12-31").
  2. 针对单元格的计算如下图所示. C2单元格的工作日天数的计算公式是NETWORKDAYS(A2,B2), 其中A2B2分别表示开始日期和结束日期,
    计算两个日期之间的工作日天数
  3. 计算给定日期所在月份剩余的工作日天数: NETWORKDAYS(A2,DATE(YEAR(A2),MONTH(A2)+1,)) , 其中A2单元格表示日期, DATE(YEAR(A2),MONTH(A2)+1,)用于计算该月的最后一天(如2018-12-3, 12月的最后一天是2018-12-31)
    计算给定日期所在月份剩余的工作日天数

2 双休, 考虑节假日, 但不考虑调休

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

出勤天数计算

3 单休, 不考虑法定节假日和调休

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

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

出勤天数计算

4 双休或单休, 考虑法定节假日和调休

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

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

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

出勤天数计算

5 函数NETWORKDAYS详细使用方法

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

语法

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

函数NETWORKDAYS.INTL的详细使用方法

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

语法

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

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

周末数 周末日
1 或省略 星期六、星期日
2 星期日、星期一
3 星期一、星期二
4 星期二、星期三
5 星期三、星期四
6 星期四、星期五
7 星期五、星期六
11 仅星期日
12 仅星期一
13 仅星期二
14 仅星期三
15 仅星期四
16 仅星期五
17 仅星期六

字符串是长度为7的0、1组合, 0表示工作日, 1表示周末, 如"0000011"表示周一到周五是工作日, 周六和周日是周末; "0000001"表示周一到周六是工作日, 周日是休息日.

上一篇 下一篇

猜你喜欢

热点阅读