workday计算指定工作日之前或之后的日期

你好,我是刘卓。欢迎来到我的公号,excel函数解析。今天和你分享的函数是workday,看这个单词就知道它和工作日有关,它返回起始日期之前或之后n个工作日的日期。工作日不包含周末和节假日。下面来看下它的参数和用法。
-01-
函数说明
workday返回起始日期之前或之后的n个工作日的日期。函数语法如下,有3个参数。
WORKDAY(start_date, days, [holidays])

第1参数Start_date :必需。是起始日期。可以是返回日期的任意值。
第2参数Days :必需。起始日期之前或之后不包含周末及节假日的天数。如果是正数,那么就是起始日期之后的日期;否则就是起始日期之前的日期。
第3参数Holidays :可选。是节假日。也就是要从工作日中排除的一些日期,包括传统假日,国家法定节假日及非固定假日。可以是包含日期的单元格区域,也可以是代表日期的常量数组。
注意:
1.这个函数默认的周末是周六和周日。也就是说它会把周六和周日排除出去,即使节假日中不包含周六和周日。后面学了自定义周末参数的那个函数workday.intl就好理解了,其实周末也是有个参数的。
2.工作日既不是周末,也不是节假日。这里要把周末和节假日分开,周末一般指的是周六和周日。节假日通常是国家法定假日,比如5,1和10,1等。
3.如果days不是整数,将截尾取整。
-02-
示例解释
以下图第1个为例说明,起始日期是今天的日期2020/4/12,之后的第6个工作日的日期是2020/4/20。它是怎么算的呢?可以参考下图的日历。
从日历中可以看出2020/4/13是它之后的第1个工作日,2020/4/14是之后的第2个工作日,一直往后数,第5个工作日是2020/4/17,第6个工作日是2020/4/20。因为2020/4/18和2020/4/19是周六和周末,它们不是工作日,所以要跳过。由于这里没有指定节假日,所以不用跳过节假日的日期。
-03-
具体应用

1.计算预计交货时间
假如你在一家供应商拿货,他针对不同的产品会有不同的交期。比如A产品他约定的交期是下单日期之后的2个工作日,那么你就可以计算预计的交期。在D7单元格输入公式=WORKDAY(B7,C7),向下填充。
从上边的日历中可以看到,2020/4/2之后的第2个工作日是2020/4/6。因为2020/4/4和2020/4/5是周六和周末,所以要跳过。这个函数默认的周末就是周六和周日。但是现实中,不是所有人的周末都是周六和周日,有的人可能只是单休。所以就要用到自定义周末参数的函数,下次会讲。
下面再来看看有节假日的情况。我列举了2020年1月到4月的国家法定节假日,放在G列。此时的预计交期会有所改变,E7的公式为=WORKDAY(B7,C7,G$6:G$18),返回的结果为2020/4/7。与之前没有节假日的时候相比,推迟了1天。
因为从2020/4/4到2020/4/6这3天是清明节,所以要跳过这3天。如下图日历所示。有些小伙伴在这里可能还有个疑问,workday默认的周末是周六和周日,算工作日的时候会把它们排除掉。现在节假日中也包含周六和周末,会不会再排除一次呢?不会的,如果1个日期即是周末,又是节假日,那么它只被排除1次。比如2020/4/4和2020/4/5。这里只排除非工作日。
有了上面的认识,我们也可以用常规公式来计算预计交期,公式为=SMALL(IF((WEEKDAY(B7+ROW($1:$99),2)<6)*ISNA(MATCH(B7+ROW($1:$99),G$6:G$18,)),B7+ROW($1:$99)),C7),按ctrl+shift+enter三键。
判断起始日期之后的一段时间内,比如这里是起始日期之后的1到99天,是工作日的有哪些日期。然后从这些工作日的日期中找到我们要的那个日期。如何判断是否是工作日呢?既不是周末也不是节假日的就是工作日。
链接:
https://pan.baidu.com/s/1t_34NX1asyE6tRjh5MMPRA
提取码:vzjb
(0)

相关推荐