考勤机数据和请休假情况数据处理完成后,需要对两种数据进行汇总,本节中主要是学习如何将两种数据汇总。如果前3节考虑的周全,表格设计的比较好,这节训练还是比较轻松的,否则还需要去修改前面的数据及表格。
1、第2节和第3节的数据处理完成后,如何将数据导入预想的表格结构中?检验一下是否能达到,如果不能达到,需要再借助什么样的表格来达到?
2、预想的表格结构是如何的,请将完善后的表格列出? 如表6是预想的表格最终效果。
表6 3、如何将两种数据汇总起来?需要借助什么样的方法?如果不知道可以借助网络搜索等方法。
4、如果借助函数,同前2节的训练一下,请借助网络、帮助文件或EXCEL页面上“公式”选项卡的“函数库”功能区去一一查找具体函数,并将函数定义、语法、各参数的详细解释等列出来并掌握。
5、如果借助其它方法,请掌握此方法及其它基础操作方法。
本课作业
———————————如下是基于以上思路,我自己写的训练作业——————————— 本节主要训练考勤机数据和请休假的情况汇总到一起生成最终的考勤表,难点是如何实现表格的自动汇总。
通过第2节考勤机源数据的处理和第3节各种请休假数据的处理,如果这些数据仅给工资表提供数据支持,那么通过简单汇总就可以实现目的,但处理考勤数据并不仅仅是为了做工资用,还有其它作用,需要我们将考勤机打卡数据和请休假的情况汇总起来才可以。
现在回过头来看,我们在第1节的时候计划将考勤表设计成如下格式。
在这个表格中,我们在前面几节中解决了员工编号的问题、各种请休假的问题、迟到早退的问题等,考勤记录除了正常出勤,其它的在前面几节中都有体现。现在唯一没有解决的是正常出勤按什么记录?我们可以用“出勤”来记录,也可以什么也不记录即表示出勤等,结合员工打卡的情况,我们会发现如果员工全天没打卡也没有各种请休假的记录的话,我们在前面几节中都没有进行判断,所以建议如果正常出勤的话,用打卡次数来表示。原因如下:
1、打卡次数足够后,就代表正常出勤,否则就是考勤异常(如旷工)。我们在前面也一直在说,让EXCEL实现自动运算汇总,那么通过打卡次数来判断的话,公式设置比较方便。
2、打卡次数不足的,并不一定是员工未打卡,有可能是考勤机的原因,也有可能是员工因公出差或外出没来得及打卡等,这种异常情况还需要二次处理,在上图的考勤表中查看不足打卡次数的人员,再对比相关单据进行修改。
至此,我们会有一个判断,之前设计的表格中还是有缺陷的,如下图是第2节中的图,我们统计旷工是按打卡为1次的进行统计,但一天未打卡的我们是根本没办法去判断,通过第3节统计各种请休假情况的公式,我们可以判断:打卡不足2次的我们在引入最终考勤表时,通过打卡次数用IF函数来判断。这也是我们在设计表格时,先前考虑的和实践的不同之处。
所以我们将上图中的“旷工”列可以更改为“打卡次数”,或者直接增加一列标题为“打卡次数”,如下图,我们在I2单元格中输入公式“=COUNT(E2:F2)”,双击填充公式。
这样我们手里会有两份最终表格,一份是上图,一份是请休假情况统计的表格。这两张表格如何汇总呢?我们经过判断会得出,当天有请休假情况的应该优先记录请休假的情况,打卡次数我们要忽略;当天没有请休假情况的,我们再判断,如果打卡次数为2次的,直接显示2,如果不足2次的,显示旷工。 现在我们如何生成最终表格呢?在第3节中已经有公式了,用VLOOKUP函数。 STEP 1:我们将员工编号和姓名粘贴到最终考勤表中。 STEP 2:假定考勤机数据保存的工作表名为“第4节-1”,请休假情况保存的工作表名为“第3节-5”,在C2单元格输入公式“=IF(WEEKDAY(DATE(2015,7,C$1),2)>5,"",IF('第3节-5'!C2<>"",'第3节-5'!C2,IF(IFERROR(VLOOKUP($A2&C$1,IF({1,0},'第4节-1'!$A$2:$A$24&DAY('第4节-1'!$C$2:$C$24),'第4节-1'!$I$2:$I$24),2,0),0)<2,"旷",2)))”,右拉下拉。 STEP 3:用COUNTIF函数统计各种请休假的情况。 STEP 4:用SUMIF函数在处理过的考勤机数据里面引用迟到、早退的数据。
最终表格效果如下:
这样最终的考勤表算是初步成功了,在这里讲解的只是一个思路,还有很多问题值得我们去考虑,思路请在1-3节和本节中找。
1、我们在前面讲解到了,每天的考勤情况中有迟到早退的情况,但在本节讲解中,迟到早退的情况没有加入。 2、如果一天有多种考勤情况的,如何汇总到最终考勤表中,如有迟到、早退、请休假、旷工等情况。 3、如果每天有请小时假或者半天假的,如何处理。 4、如果有调休的情况如何处理。 5、有加班情况的如何记录,如何统计,如果同时存在加班和调休,如何处理。 6、如果有法定节假日,如何处理。 ………… 这些问题都是需要结合公司情况来考虑的,不在一一解决,但所有的解决思路都在可以在本节和1-3节中寻找,处理方法几乎大同小异,函数应用也是类似的,不再占用篇幅来写。
公式讲解 =IF(WEEKDAY(DATE(2015,7,C$1),2)>5,"",IF('第3节-5'!C2<>"",'第3节-5'!C2,IF(IFERROR(VLOOKUP($A2&C$1,IF({1,0},'第4节-1'!$A$2:$A$24&DAY('第4节-1'!$C$2:$C$24),'第4节-1'!$I$2:$I$24),2,0),0)<2,"旷",2)
这个函数是嵌套函数,“IFERROR(VLOOKUP($A2&C$1,IF({1,0},'第4节-1'!$A$2:$A$24&DAY('第4节-1'!$C$2:$C$24),'第4节-1'!$I$2:$I$24),2,0),0)”不再解释,请看第3节内容。
整个函数来看,通过用IF和WEEKDAY函数判断是否属于周六日,如果属于单元格返回空值。通过IF函数判断请休假情况统计表中相对应的单元格是否是空值,如果不是,返回单元格的值(肯定是各种请休假情况)。通过IF函数判断打卡次数是否小于2,如果小于则旷工,否则返回2(代表出勤)。
|
|