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个周四。
链接:
pan.baidu/s/1YLJu6kkx6hohY3_cMvUhnQ
提取码:mmix
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论