工作日天数的算法 三个工作日是几天

问题情景
甲说:我们单位周六、周日双休,从没有节假日;
乙说:我们单位周日单休,从没有节假日;
丙说:我们单位周六、周日双休,还有节假日;
丁说:我们单位周日单休,还有节假日;
但,我们都有同一个问题:怎么算两个日期之间有多少天是工作日?
公式实现这四种情况的实现,一个函数就能解决,这个函数就是:NETWORKDAYS.INTL
如下图:

工作日天数的算法 三个工作日是几天

文章插图
NETWORKDAYS.INTL函数
功能:
计算时间段内工作日的天数
语法:
NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
中文语法:
NETWORKDAYS.INTL(起始日期, 结束日期, [周末数字或字符串], [节假日])
NETWORKDAYS.INTL函数语法具有以下参数:
  • start_date和 end_date必需 。要计算其差值的日期 。start_date可以早于或晚于end_date,也可以与它相同 。
  • weekend可选 。表示介于 start_date和 end_date之间但又不包括在所有工作日数中的周末日 。Weekend是一个用于指定周末日的周末数字或字符串 。
  • holidays 可选 。一组可选的日期,表示要从工作日日历中排除的一个或多个日期 。holidays 应是一个包含相关日期的单元格区域,或者是一个由表示这些日期的序列值构成的数组常量 。holidays 中的日期或序列值的顺序可以是任意的
weekend数值表示以下周末日:
工作日天数的算法 三个工作日是几天

文章插图
(如果是星期一休息,weekend数值是12)
weekend也可以是周末字符串值,长度为七个字符,并且字符串中的每个字符表示一周中的一天(从星期一开始) 。1 表示非工作日,0 表示工作日 。在字符串中仅允许使用字符 1 和 0 。使用 1111111 将始终返回 0 。
例如,0000011 结果为星期六和星期日是周末 。
所以,本文开始的四种计算方式,可以写为:
工作日天数的算法 三个工作日是几天

文章插图
但由于字符串写起来较麻烦,一般都用数值 。
【工作日天数的算法 三个工作日是几天】备注
如果周六周日双休且不考虑节日,也可直接用NETWORKDAYS函数:
工作日天数的算法 三个工作日是几天

文章插图
往期相关推荐