分享

手把手教你,学会工作日相关函数

 hercules028 2021-01-15
使用WORKDAY函数计算相隔指定工作日的日期
WORKDA Y函数用于返回在起始日期之前或之后、与该日期相隔指定工作日的日期。函数的基本语法如下。
第一参数start_date为起始日期;第二参数days为开始日期之前或之后不含周末及节假日的天数;第三参数holidays为可选参数,包含需要从工作日历中排除的一个或多个节假日日期。
示例13-41    计算项目结束日期
图13-65为某公司项目施工计划表的部分内容,B列为项目开始日期,C列为各项目的预计天数,F列为法定节假日,需要计算出各项目的结束日期。
在D2单元格中输入以下公式,并向下复制到D6单元格。
=WORKDAY(B2,C2,F$2:F$4)
公式中,B2为起始日期,指定的工作日天数为8,“F$2:F$4”单元格区域为需要排除的节假日日期,Excel计算时自动忽略这些日期来计算工作日。
能够自定义周末 参数的工作日计算函数WORKDAY.INTL
WORKDAY .INTL函数的作用是使用自定义周末参数,返回在起始日期之前或之后、与该日期相隔指定工作日的日期,基本语法如下。
start_date参数表示开始日期。
days参数表示开始日期之前或之后的工作日的天数,正值表示未来日期,负值表示过去日期,零值表示开始日期。
weekend为可选参数,用于指定一周中属于周末和不作为工作日的日期。不同weekend参数对应的自定义周末日如表13-7所示。
weekend参数也可以使用由1和0组成的7位数字符串,0为工作日,1为休息日。这种表现形式更为直观,也更便于记忆。例如,指定星期二、星期四和星期六为休息日,则可使用“0101010”表示。在字符串中仅允许使用字符1和0,并且至少要包含1个1或1个0。
holidays为可选参数,表示要从工作日日历中排除的日期。该参数可以是一个包含相关日期的单元格区域,也可以是由日期序列值构成的数组常量。
示例13-42    按自定义周末计算项目完成日期
通过设置不同的weekend参数,WORKDAY.INTL函数可以灵活地实现非5天工作日的日期计算。在图13-66所示的项目施工计划表中,需要根据开始日期和预计天数,计算出各项目的结束日期。计算时需按每周6天工作制,以星期日为休息日计算,并且需要去除F列的法定节假日。
在D2单元格中输入以下公式,并向下复制到D6单元格。
=WORKDAY.INTL(B2,C2,11,F$2:F$4)
WORKDAY.INTL函数的第三参数使用11,表示仅以星期日作为休息日。如果第三参数使用由1和0组成的7位数字符串,可以写成以下公式。
=WORKDAY.INTL(B2,C2,'0000001',F$2:F$4)
使用NETWORKDAYS函数计算两个日期之间的工作日天数
N ETWORKDAYS函数用于返回两个日期之间完整的工作日天数,该函数的语法如下。
第一参数start_date为起始日期;第二参数end_date为结束日期;第三参数holidays可选,是需要排除的节假日日期。
示例13-43    计算员工应出勤天数
图13-67为某公司新入职员工的部分记录,需要根据入职日期,计算员工该月应出勤天数。
在C2单元格中输入以下公式,并向下复制到C8单元格。
=NETWORKDAYS(B2,EOMONTH(B2,0))
“EOMONTH(B2,0)”部分用于计算出员工入职所在月份的最后一天。
NETWORKDAYS函数以入职日期作为起始日期,以入职所在月份的最后一天作为结束日期,计算出两个日期间的工作日天数。
本例中省略第三参数,实际应用时如果该月份有其他法定节假日,可以使用第三参数予以排除。
示例13-44    计算调休情况下的员工应出勤天数
在实际的工作日计算中,除了考虑法定节假日的因素外,还要考虑调休日期安排。如图13-68所示,需要根据F列和G列的放假时间及调休安排,计算2018年员工每月应出勤天数。
在G2单元格中输入以下公式,并向下复制到G13单元格。
=NETWORKDAYS(A2,B2,F$2:F$28)+COUNTIFS(G$2:G$28,'>='&A2,G$2:G$28,'<='&B2)
NETWORKDAYS函数以每月的第一天作为起始日期,以每月的最后一天作为结束日期,第三参数引用F$2:F$28单元格区域的法定节假日,计算出两个日期间不包含法定节假日的工作日天数。
再使用COUNTIFS函数,分别统计G$2:G$28单元格区域中的调休日期大于等于A2开始日期,并且小于等于B2结束日期的个数,也就是统计在当前日期范围中的调休天数。
最后用不包含法定节假日的工作日天数加上当前日期范围中的调休天数,得到当月应出勤天数。
使用NETWORKDAYS.INTL函数的自定义周末参数计算间隔工作日
NET WORKDAYS.INTL函数的作用是使用自定义周末参数,返回两个日期之间的工作日天数。该函数的语法如下。
第一参数start_date表示起始日期。
第二参数end_date表示结束日期。
第三参数weekend为可选参数,表示指定的自定义周末类型,与13.7.2节中WORKDAY.INTL函数的第三参数规则相同。
第四参数holidays为可选参数,表示包含需要从工作日历中排除的一个或多个节假日日期。
示例13-45    处理企业6天工作制的应出勤日期
如图13-69所示,需要根据新员工的入职日期,按每周6天工作日、星期日为休息日,计算员工该月应出勤天数。
在C2单元格中输入以下公式,并向下复制到C8单元格。
=NETWORKDAYS.INTL(B2,EOMONTH(B2,0),11)
NETWORKDAYS.INTL函数的第三参数使用11,表示仅星期日为休息日。
以下公式也可完成相同的计算。
=NETWORKDAYS.INTL(B2,EOMONTH(B2,0),'0000001')
本例中省略第四参数,实际应用时如果该月份有其他法定节假日,可以使用第四参数予以排除。
示例13-46    使用NET WORKDAYS.INTL函数计算指定月份中有多少个星期日
根据NETWORKDAYS.INTL函数能够自定义周末参数的特点,能够方便地计算出指定日期所在月份中包含多少个星期日。
如图13-70所示,在B2单元格中输入以下公式,并向下复制到B7单元格。
=NETWORKDAYS.INTL(EOMONTH(A2,-1)+1,EOMONTH(A2,0),'1111110')
“EOMONTH(A2,-1)”部分用于计算出A2单元格日期上一个月的最后一天,结果加1,即为当前月的第一天。
“EOMONTH(A2,0)”部分用于计算出A2单元格日期当前月份的最后一天。
NETWORKDAYS.INTL函数分别以当前月的第一天和当前月的最后一天作为起止日期,第三参数使用“1111110”,表示仅以星期日作为工作日,计算两个日期之间的工作日数,结果就是日期所在月份中包含的星期日天数。

-------------------------------------------------------------------

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多