因为公司没有OA系统,请假申请要走纸质单,我就做了一个可以审批的excel,可以实现如下功能:
1)员工信息自动获取;
2)自动计算需要请假时间(扣除中午休息、跨天计算)
3)指定人员的电脑才能标记“审批”
4)审批后,该行信息不得修改
5)自动计算剩余年假
6)自动生成纸质请假单
7)自动生成可以打印的签名纸质单(可以不用手签字)
其中的难点是:
1)请假时间的计算,需要考虑几个事情:
a)抠掉中午休息时间;b)抠掉法定节假日和周末;c)跨天计算
详情如下:
a)如何抠掉中午的休息时间?
试想开始时间是A,结束时间是B;中午休息时间是从C到D;
分为几种情况,经过简单的逻辑推算,相应的公式为:
如果和休息时间有交集,则MIN(B,D)-MAX(C,A)------这就是需要抠出的中午休息时间;
b)去掉法定节假日就比较简单,用 NETWORKDAYS.INTL(),法定节假日预先设置到另外一个表格中。
法定国假列表
最终的完整公式:
ROUND((IF(F486=H486,0,NETWORKDAYS.INTL(F486,H486,1,国定假日列表!$B$2:$B$145)-1))*8-(G486-8.5/24)*24 (I486-8.5/24)*24-IF(OR(I486<=11/24,G486>=11.5/24),0,MIN(I486,11.5/24)-MAX(11/24,G486))*24,1)
2)设置指定人员才能“审批”,具体的步骤如下图:
这样只有指定的人才可以修改这个区域,也可以设置密码。
3)审批后,此行信息不得修改。
这里使用数据验证,如果这行的审批列为“OK”,则无法修改。
采用的方法是设置数据验证中的自定义公式。