在制作工资表、计算新员工或辞职员工工资时,由于很多情况下员工不是月初入职或月末离职的,算员工的工作日天数时就会遇到一个棘手的难题:扣除周末天数。
记得有位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!。
4、如果 weekend 字符串的长度无效或包含无效字符,则 NETWORKDAYS.INTL 返回错误值 #VALUE!。