workday.intl使用自定义周末参数返回指定工作日之前或之后的日期

你好,我是刘卓。欢迎来到我的公号,excel函数解析。昨天分享了workday的用法,今天来讲下workday.intl的用法。它和workday的用法基本上是一样的,但是它有个周末参数,可以自己定义周末有几天,分别是哪几天。比workday更加灵活实用。
-01-
函数说明
workday.intl使用自定义周末参数返回起始日期之前或之后的n个工作日的日期。周末参数指明周末有几天以及是哪几天,周末和任何指定为假期的日期都不被视为工作日。语法如下,有4个参数。
WORKDAY.INTL(start_date, days, [weekend], [holidays])

第1参数Start_date :必需。是起始日期。
第2参数Days :必需。起始日期之前或之后的工作日的天数。如果是小数,将被截尾取整。
第3参数weekend :可选。是一个用于指定周末的数字或字符串。它有多种类型,像weekday的第2参数一样,如下图所示。1或省略代表周末是周六和周日。2代表周末是周日和周一。11代表周末仅是周日,此时周末只有1天。
除了用数字指定周末,还可以用字符串指定,比如"0000011"。字符串的长度为7,分别代表周一到周日。而且在字符串中只允许使用0和1,1代表周末,0代表非周末或工作日。"0000011"代表的意思是周末是周六和周日。使用字符串指定周末更加灵活强大。
第4参数holidays  :可选。代表节假日。可以是包含节假日的单元格区域或常量数组。
-02-
示例解释
如下图所示,起始日期是2020/4/13,工作日的天数是6天,周末参数选1,代表周末是周六和周日,最后返回的结果是2020/4/21。也就是起始日期之后的第6个工作日的日期,你可以参考下图的日历,我就不标出来了。周末参数是1的时候也可以忽略不写,公式为=WORKDAY.INTL(A3,B3)。这样的话就和workday的用法一样了,默认周末是周六和周日。
再来看下第2个例子,公式为=WORKDAY.INTL(A4,B4,11)。起始日期和工作日的天数都不变,只有周末参数变为11,代表周末只有周日。最后返回的结果为2020/4/20。还是参考上图的日历,周六此时是工作日,所以要算进去。
下面列举几个字符串,让大家明白字符串代表的周末是哪些。
字符串代表的周末知道了,就来看下下面的示例。公式为=WORKDAY.INTL(A15,B15,"0000011"),第3参数代表周末是周六和周日,和=WORKDAY.INTL(A15,B15,1)这个公式是一样的意思,所以最后的结果还是2020/4/21。第2个你自己看下吧。
最后再来看下有节假日的情况。节假日假定有3天,如F20:F22所示。D20的公式为=WORKDAY.INTL(A20,B20,"0000011",F20:F22)。周末是周六和周日,然后节假日又有3天。所以要把周末和节假日去掉。2020/4/13往后推6个工作日,结果就是2020/4/23,如下图日历所示。15号和16号是节假日,要排除;18号和19号是周六和周日,也要排除。这里19号既是周末又是节假日,只排除一次。
示例写了这么多,就是为了让你搞清楚这个函数是怎么得出结果的。第3参数是周末,第4参数是节假日。如果一个日期是周末,或者是节假日,或者既是周末又是节假日,那么把它排除就可以了。因为这几种情况,它都不是工作日。下面看一个具体的应用吧。
-03-
具体应用

1.计算每年的感恩节的日期
计算一下每年的感恩节是几月几号,比如今年的感恩节是2020/11/26。那么感恩节是怎么算的呢?它是每年的11月的第4个星期4。看到这个问题,你第一个想到的方法是什么?我第一个想到的方法是先算出11月的第1个星期4的日期。随后又想到了万金油的方法。但是这些方法都要用到数组,而且公式比较长。而用workday.intl就很简短。在B27单元格输入公式=WORKDAY.INTL(DATE(A27,11,),4,"1110111"),向下填充。
DATE(A27,11,)这部分返回10月的最后一天的日期。"1110111"这个字符串代表的意思是只有周四是工作日,其他都是周末。也就是说一周只工作一天,这样的工作不要太爽。注意"1111111"这个字符串是无效字符串,不要想着一周全休,达到财务自由才有可能实现。"0000000"一周无休倒是可以实现的。
说了点题外话,还是回到咱们的题目。也就是说从10月的最后一天往后推4个工作日,而每个工作日刚好是一个周四,所以第4个工作日就是第4个周四。这样说不好理解,还是参考下图的日历。蓝色框标记的都是周末,所以要排除,只有红圈标记的是工作日。
这就是用字符串指定周末的强大之处,可以自己定义周末是几天以及是哪几天,只要不超过7天就可以了。上面的例子我们定义周末是6天,工作日是1天。学会了计算感恩节的日期,你也可以算一下父亲节和母亲节的日期。其实这个问题的本质就是计算某年某月第几个星期几的日期。
下面这个公式是先计算出第1个星期4的日期,再加21天就是第4个星期4的日期。第1个星期4的日期是怎么算出来的呢?首先找到11月的1到7号,1到7号中肯定包括周一到周日,只不过顺序是乱序。然后把1到7号的日期转为周几,再找到周四的位置,由这个位置可以知道它是几号,进而可以知道它的日期。
可以参考下图的日历,首先找到11月的1到7号,如蓝色框所示。这7天中肯定包含周一到周日,然后把它们转为周几,如蓝框上面的小红字,11月5号是周四,返回4。接下来查找周四的位置,返回5。5刚好就是11月的5号。11月的第1个周四是11月5日,第4个周四就是11月5日再加21天。
万金油的公式为=SMALL(IF(WEEKDAY(DATE(A27,11,)+ROW($1:$31),2)=4,DATE(A27,11,)+ROW($1:$31)),4),按ctrl+shift+enter三键结束。
思路是在11月的所有日期中,找到哪些日期是周四,最后再找出第4个周四。
链接:
https://pan.baidu.com/s/1YLJu6kkx6hohY3_cMvUhnQ
提取码:mmix
(0)

相关推荐