打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
networkdays.intl使用自定义周末参数返回两个日期间的工作日数

你好,我是刘卓。欢迎来到我的公号,excel函数解析。昨天讲了networkdays的用法,今天来讲下networkdays.intl的用法,它可以自定义周末,来计算两个日期间的工作日数,比networkdays更加灵活强大。-01-

函数说明

networkdays.intl使用自定义周末参数返回两个日期间的完整工作日数。函数语法如下,有4个参数。

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

第1参数start_date:是起始日期。起始日期可以小于或大于结束日期,如果大于结束日期,函数返回负值。

第2参数end_date:是结束日期。

第3参数weekend:是用来指定周末的数字或字符串。有多种类型可选,如下图所示。如果忽略代表周末是周六和周日,此时和networkdays一样。

除了用数字指定周末,还可以用0和1的字符串来指定,字符串的长度为7,分别代表周一到周日;1代表周末,0代表非周末。比如"0000011"代表周六和周日是周末。

第4参数holidays :是节假日。可以是包含日期的单元格区域或常量数组。

-02-

示例解释

第1个示例中,起始日期是2020/4/15,结束日期是2020/4/19,周末参数选1,代表周六和周日是周末,所以它们之间的工作日数是3天。就是下图日历中标黄的3天。也就是用两个日期间的总天数5减去2个周末。

第2个示例中,起始日期和结束日期都不变,只有周末参数变为11,代表只有周日是周末,所以二者之间的工作日数是4天。也就是15,16,17,18号这4天。节假日的情况就不说明了,你自己研究下。

-03-

具体应用

1.计算日期所在的月份有几个星期五比如2020/4/15所在的月份是4月,计算2020年4月有几个星期五。思路是把周五指定为工作日,其他都是周末。也就是一周只有周五工作,其余的6天都是休息。只要计算出4月有几个工作日,其实就算出了周五的个数。

如果理解不了,可以参考下图的日历。只有周五是工作日,如标黄的4天。其余标红的都自定义为周末,所以要排除掉。那么从月初到月末,只有标黄的那4天是工作日。

B9单元格的公式为:

=NETWORKDAYS.INTL(EOMONTH(A9,-1)+1,EOMONTH(A9,0),"1111011")

EOMONTH(A9,-1)+1返回月初的日期,也就是起始日期。EOMONTH(A9,0)返回月末的日期,也就是结束日期。"1111011"是周末参数,指定周五是工作日,其他都是周末。

2.计算日期所在的月份有几周

比如2020/4/15所在的月份是4月,计算2020年4月有几周。这个题之前我们也做过,先由月初的日期得到上周末的日期,上周末的日期就是上个月最后一个周日的日期。再算出上个月最后一个周日到本月末之间有几个周一,就得到本月有几周。

还是参考下图的日历,由2020/4/1算出上周末的日期2020/3/29。然后再算出2020/3/29到2020/4/30之间有几个周一。一共有5个周一,已标黄显示。这样就算出2020年4月有5周。其实就相当于把每一周推到了周一。

思路分析完了,公式该怎么写呢?在B17单元格输入公式:

=NETWORKDAYS.INTL(EOMONTH(A17,-1)+1-WEEKDAY(EOMONTH(A17,-1)+1,2),EOMONTH(A17,0),"0111111")

EOMONTH(A17,-1)+1返回月初的日期,WEEKDAY(EOMONTH(A17,-1)+1,2)将月初的日期返回周几。

EOMONTH(A17,-1)+1-WEEKDAY(EOMONTH(A17,-1)+1,2)由月初的日期得到上个月最后一天的日期,把它作为networkdays.intl的起始日期。

EOMONTH(A17,0)返回月末的日期,作为networkdays.intl的结束日期。"0111111"是周末参数,指定周一是工作日,周二到周日全部是周末。

3.计算今年各月的工作日数

假如现在一周休1.5天,周日休1天,周六休半天。计算今年各月的工作日数。思路是先算出除去周六周日的工作日数,然后再算出当月周六的天数,除以2得到了周六的工作天数,把二者加起来就得到了当月的工作日数。

以A25为例,首先算出不含周六周日的工作日数,公式为=NETWORKDAYS.INTL(A25,EOMONTH(A25,0),1)。

然后算出当月周六的天数,公式为=NETWORKDAYS.INTL(A25,EOMONTH(A25,0),"1111101")。"1111101"代表周六是工作日,其他是周末。周六工作半天,所以工作日为天数的一半。

最后当月的完整工作日数的公式为

=NETWORKDAYS.INTL(A25,EOMONTH(A25,0),1)+NETWORKDAYS.INTL(A25,EOMONTH(A25,0),"1111101")/2

但是上面的公式有点长,而且有重复的部分,只有周末参数是不同的,所以可以简化一下,简化后的公式为:

=SUM(NETWORKDAYS.INTL(A25,EOMONTH(A25,0),{1,"1111101"})/{1,2})

把2个周末参数放在常量数组中,返回的结果也有2个值,第1个是不包含周六和周日的工作日数,第2个是周六的天数。分别把它们除以1和2,最后用sum求和。

链接:

https://pan.baidu.com/s/1EFHQsFsTL4DDAd0_ktLQEg提取码:7izw

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
计算出勤天数的3个技巧
手把手教你,学会工作日相关函数
Excel教程:excel计算考勤天数,离不了EOMONTH函数,收藏学习!
自学WPS表格36:日期与时间函数(三)
Excel的日期时间概念与函数大全
你的工作时薪是多少?Excel来帮你计算!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服