■ 案例 现从一台08年生产的指纹考勤机导出一份18年1月的考勤表,可以看出这考勤机就是按一下指纹生成一条记录,挺符合一维表设计。 然而,现公司为看大家敬业度(偷懒度),拟计算每个人出勤情况,要计算出每天出勤时长。规则如下:
小编看到这份考勤表,大多人都“朝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> |
|