考勤的计算与其说是技术活,不如说是个数学活,更多的时候是理清思路,找到解题方法。
本文一方面分享给还在用上个年代考勤机的同学,另一方面分享给数据分析同学供思路参考。
■ 案例
现从一台08年生产的指纹考勤机导出一份18年1月的考勤表,可以看出这考勤机就是按一下指纹生成一条记录,挺符合一维表设计。
然而,现公司为看大家敬业度(偷懒度),拟计算每个人出勤情况,要计算出每天出勤时长。规则如下:
8:00上班、17:00下班
中午12:00-13:00休息
小编看到这份考勤表,大多人都“朝7晚7”了,还要计算考勤,人性何在。。。
■ 解题思路分析
行吧,就当是拿来练练手。动手前,先理下业务思路:
然后,我们从系统角度出发更新思路图,并与上图序号保持一致:
可见解题关键在于以下两点:
识别员工当天是否应出勤
用《考勤表》(姓名 日期)跟《班次表》(姓名 日期)做个Vlookup对比即可,本文暂不展开。
识别员工当天上班、下班时间
在不考虑有跨夜班的场景下,用【透视表】先拉取到每名员工每天最早&最晚下班时间,再用IF计算即可。
具体操作如下。
■ 操作步骤1:生成透视表
这里要注意,我们需要拖动2次“刷卡时间”到“值字段”,用于计算最早&最晚打卡时间。
在布局上我们选择 表格形式 重复标签 不分类汇总 。
■ 操作步骤2:规范数据源格式
其实这应是第1步。
由于生成透视表后,发现E、F为“计数项”,可知系统导出的日期、时间为文本数据,我们可用“分列”转换数据源的数据类型。
■ 操作步骤3:计算当日最早和最晚打卡时间
步骤2、3操作图如下
■ 操作步骤4:用IF/IFS计算出勤情况
=IFS(E4=F4,"忘打卡",E4-"8:00">0,"迟到",F4-"17:00"<0,"早退",TRUE,F4-E4-1/24)
注意到上图第13行数据,这种显然就是旷工!额...当然也可能早上忘打卡了~
这种“假迟到/旷工”的,需按公司规定进一步细化。如迟到早退2小时以上视为旷工半天等,再加个IF条件即可。
End.
运行人员:中国统计网小编
中国统计网,是国内最早的大数据学习网站
//www.itongji.cn
,