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

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

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

  • 1 双休, 不考虑节假日和调休
  • 2 双休, 考虑节假日, 但不考虑调休
  • 3 单休, 不考虑法定节假日和调休
  • 4 双休或单休, 考虑法定节假日和调休

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

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

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

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

  • 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, 该函数包括四个参数, 分别是:

  • start_date, 必选参数, 表示开始日期;
  • end_date, 必选参数, 表示结束日期;
  • weekend, 可选参数, 表示一周中哪些天是周末, 哪些天是工作日. 使用一个由0,1组成的字符串表示, 0表示工作日, 1表示周末, 如每周双休可以表示为: "0000011", 周日单休可以表示为: "0000001".
  • holidays, 可选参数, 表示节假日, 可以自定义节假日.

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

出勤天数计算

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

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

  • 首先, 把一周的7天都作为正常的工作日;
  • 然后, 所有的周末和法定节假日, 减去所有的调休作为节假日;
  • 最后, 计算一段时间内的所有天数减去节假日的天数就是正常的工作日天数.

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

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

出勤天数计算

5 函数NETWORKDAYS详细使用方法

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

语法

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

  • Start_date, 必需参数。 一个代表开始日期的日期。
  • End_date, 必需参数。 一个代表终止日期的日期。
  • Holidays, 可选参数。不在工作日历中的一个或多个日期所构成的可选区域,例如:省/市/自治区和国家/地区的法定假日以及其他非法定假日。该列表可以是包含日期的单元格区域,或是表示日期的序列号的数组常量。

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

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

语法

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

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

  • **start_date 和 end_date **, 必需参数。 要计算其差值的日期。 start_date 可以早于或晚于 end_date,也可以与它相同。
  • weekend 可选。 用于指定一个星期中哪些天是工作日和哪些天是周末, 有两种表示方法, 一种是使用数字来表示weekend, 另一种是使用字符串来表是
    可以用下表中的数字来表示, 第一列是数字, 第二列是该数字代表的意义.
周末数 周末日
1 或省略 星期六、星期日
2 星期日、星期一
3 星期一、星期二
4 星期二、星期三
5 星期三、星期四
6 星期四、星期五
7 星期五、星期六
11 仅星期日
12 仅星期一
13 仅星期二
14 仅星期三
15 仅星期四
16 仅星期五
17 仅星期六

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

  • holidays 可选。 一组可选的日期,表示要从工作日日历中排除的一个或多个日期。 holidays 应是一个包含相关日期的单元格区域,或者是一个由表示这些日期的序列值构成的数组常量。 holidays 中的日期或序列值的顺序可以是任意的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343