我上一篇分享了用excel做流程审批的一些功能和大致公式、函数,后来有一些朋友问我要源文件,但因为最近忙,没有时间一一分享,只好再次详细介绍各个公式和用法和注意事项。
我以“假期申请审批”为例,来详细讲解其中涉及到的关键内容,其它的审批也类似。
大致结构:
表格中每一条申请占用一行,主要有员工基本信息,请假的时间范围,时长计算,审批结果,打印控制筛选,自动签名等,如下图:
申请和审批单
1、员工信息,关键字是姓名,利用姓名,带出工号和其它信息,这里用Vlookup,这里需要特别注意的是,最好是考虑到消除错误返回值,这里加一个IFNA()。
Vlookup是一个非常通用的函数,相信都能掌握了。
IFNA的格式是 ifna(正常值,出错后的返回值),这是非常实用的,为了减少表格中出现#NA的概率。
2、是填入的时间段,这里可以跨天和跨休息日。
3、休息时间长度计算,此处考虑扣除了中午休息时间、周末和法定假日。
A> 中午休息时间扣除:我们设起始时间是A,终止时间是B;中午休息时间段为从C到D。
1)如果A到B和C到D没有交集,则扣除休息时间为0;
2)如果A到B和C到D有交集,则需要扣除的为min(B,D)-max(A,C);推算过程见下图:
中午休息时间扣除推算过程
B>扣除周末和国定节假日:使用NETWORKDAYS.INTL(开始日期,结束日期,周末模式,国定假日列表)
所以,最终的公式为:
ROUND((IF(F6=H6,0,NETWORKDAYS.INTL(F6,H6,1,国定假日列表!$B$2:$B$145)-1))*8-(G6-8.5/24)*24+(I6-8.5/24)*24-IF(OR(I6<=11/24,G6>=11.5/24),0,MIN(I6,11.5/24)-MAX(11/24,G6))*24,1) (这里还牵涉到计算的小时数和天数之间的换算,以及需要取有效数字)
4、现在到了最重要的审批阶段,我们可以设定这样只有指定的人才可以修改这个区域,也可以设置密码。
审批后,此行信息不得修改。
这里使用数据验证,如果这行的审批列为“OK”,则无法修改。
这里我们要用数据验证(数据有效性),当本行相应的单元格为OK时,则无法修改,也就是说,当此单元格不是OK时,才能修改。
我们在数据验证中,选择“自定义”,输入公式=IF($M1="",1,0),注意此处的$表示每个单元格都固定去看M列的值。
到此,审批的功能基本完成,接下来如果需要纸质单据,就需要进行打印单生成,以及领导签名的自动显示。
其中签名照片的显示非常关键,也很智能-----只有审批过的才可以显示领导的签字,为了确保安全。
由于时间关系,打印和智能图片显示就放到下次分享,也是非常实用的功能。
届时会有offset()、match()、text()以及图片名称调用的讲解,谢谢大家!
#excel教学##职场excel小技巧##考勤##excel函数##excel函数公式大全#