使用NetWorkDays.INTL函数统计员工工作天数的方法

在制作工资表、计算新员工或辞职员工工资时,由于很多情况下员工不是月初入职或月末离职的,算员工的工作日天数时就会遇到一个棘手的难题:扣除周末天数 。
记得有位HRMM是这样做的,翻开日历,然后在上面一天天的数天数 。酒店行业每月都会有几十名新入职和离职员工,一个数一分种,要数一个多小时 。
其实,在excel2010新增的NetWorkDays.INTL函数,正好可以解决这个问题 。它就是:
NetWorkDays.INTL
(返回两个日期之间的所有工作日数,使用参数指示哪些天是周末,以及有多少天是周末 。周末和任何指定为假期的日期不被视为工作日 。)
下面是2015年1月份的工资表局部 。
可以帮这位HR妹妹这样设置公式:
C2=NETWORKDAYS.INTL(IF(B2<DATE(2015,1,1),DATE(2015,1,1),B2),DATE(2015,1,31),11)
NetWorkDays.INTL函数公式说明:
1、IF(B2<DATE(2015,1,1),DATE(2015,1,1),B2);区分是不是新入职,如果不是新入职按本月1日作为开始日期,否则即为新入职,按实际入职日期算 。
2、DATE(2015,1,31):本月最后一天作为计算的截止日期 。
3、11: 表示本公司是一周六天工作日,星期日是休息日期 。
NetWorkDays.INTL函数语法(来自excel帮助文件)
NETWORKDAYS.INTL(start_date, end_date, [weekend], [holidays])
NETWORKDAYS.INTL 函数语法具有以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值 。):
1、start_date 和 end_date 必需 。要计算其差值的日期 。start_date 可以早于或晚于 end_date,也可以与它相同 。
2、weekend 可选 。表示介于 start_date 和 end_date 之间但又不包括在所有工作日数中的周末日 。weekend 是周末数值或字符串,用于指定周末时间 。
weekend 数值表示以下周末日:
weekend 字符串值为 7 个字符长,该字符串中的每个字符代表一周中的一天,从星期一开始 。1 代表非工作日,0 代表工作日 。该字符串中只允许使用字符 1 和 0 。使用 1111111 将始终返回 0 。
例如,0000011 得到的结果是星期六和星期日为周末 。
3、holidays 可选 。一个包含一个或多个日期的可选集合,这些日期将从工作日日历中排除 。假期应该是包含日期的单元格区域,也可以是代表这些日期的序列值的数组常量 。假期中的日期或序列值的顺序可以是任意的 。
注解
1、如果 start_date 晚于 end_date,则返回值将为负数,数量将是所有工作日的数量 。
2、如果 start_date 在当前日期基准值的范围之外,则 NETWORKDAYS.INTL 返回错误值 #NUM! 。
3、如果 end_date 在当前日期基准值的范围之外,则 NETWORKDAYS.INTL 返回错误值 #NUM! 。
【使用NetWorkDays.INTL函数统计员工工作天数的方法】4、如果 weekend 字符串的长度无效或包含无效字符,则 NETWORKDAYS.INTL 返回错误值 #VALUE! 。

    推荐阅读