我们按出勤天数去计算员工工资时,就需要计算两个日期之间的工作日天数。一般情况下,实际的工作日是需要去除周末双休和国假日的。而有的公司是单休,只有周日休息,周六是上班的。我们需要使用NETWORKDAYS函数来处理,详情请看敏丝下方图解。
情形1:计算日期间的工作日天数。 下图中,我们是 计算开始日期到结束日期之间的工作日天数 ,同时,我们要 去除D列中的日期(国假日,或者指定的特殊日期) 。
NETWORKDAYS函数的语法结构是: =NETWORKDAYS(开始日期,结束日期,要去除的特殊日期) 正好可以满足我们的需求。
要去除的日期,我们也可以直接写到函数公式中。 日期的本质也是数值 ,我们选中D2单元格后,按 Ctrl+1组合快捷键 ,设置单元格格式为:"数字">"常规",我们可以看到 日期2018/4/1的本质是数字43195 。 写公式的过程中,要么写 日期2018/4/5的时候加上前后双引号 ,要么 直接写数字43195 。
情形2:计算单休(仅周日休息)时日期间的工作日天数。 我们需要使用一个新的函数:NETWORKDAYS.INTL。 NETWORKDAYS.INTL函数是在NETWORKDAYS函数的 第2、3个参数之间加入了1个参数。 参数输入什么数字,请参考下表。
情形3:计算日期间的休息日天数。 我们只需要使用 结束日期减去开始日期,加上数字1,然后减去工作日天数 即可。 加上数字1的原因:1号到10号一共是10天,10-1=9(只有9天),所以需要补回1天。
情形4:加入时间干扰后的日期之间计算工作日天数。 本例中,我们对开始时间和结束时间进行判断, 早于中午12:00,归为今天,晚于中午12:00(含12:00),归为明天(加上1天) 。 举例:1月1号11:00为开始时间(早于12点),则开始日期为1月1号;如果1月1号13:00为开始时间(晚于12点),则开始日期为1月1号加一天,即1月2号(具体可参考下一步骤图片中的函数公式)。 时间的本质也是数值 ,我们可以通过设置单元格格式获取,这里 中午12:00的本质就是数字0.5 。
我们需要先使用 IF函数判定出实际要计算的开始日期和结束日期, 然后使用NETWORKDAYS函数计算两个日期之间间隔的工作日天数。
如对您有帮助,请投票或点赞鼓励一下敏丝,谢谢~