表是目前Excel一大难题,难住一大堆高手。

考勤

难在哪?难在于没有统一标准!

每个公司所用的考勤软件又不一样,导出来的数据各种各样都有,不仅如此,每个公司的计算方法也不一样。

很多高手,遇到考勤表都直接绕过,太花费时间。

学员的问题,要统计正常、加班、合计。加班的计算标准,只要当天有22:00打卡的算半天。

天数

这家工厂

打卡记录转换成考勤表

,对于一线员工还算可以,不需要考虑迟到早退这些,这样一来问题难度就降低了不少。

1.正常天数

只需判断非空单元格的次数,即可解决。

=COUNTA(B2:AF2)

2.加班天数

每个单元格最后的时间跟22:00比较,时间表面看是最后5位。可惜,后发现少1位。

提取

=RIGHT(AE2,5)

打卡记录转换成考勤表-考勤表,才是真正检验Excel水平的试金石插图

明明是5位,怎么提取出来时间不对,这只能证明里面含有隐藏字符

打卡记录转换成考勤表

,所以要提取6位。

=RIGHT(AE2,6)

最后1位隐藏字符是什么呢?卢子放弃了猜测,再用提取左边5位的方法,这样就得到时间。

=LEFT(RIGHT(AE2,6),5)

打卡记录转换成考勤表-考勤表,才是真正检验Excel水平的试金石插图1

用文本函数提取出来的时间是文本格式,不能直接比较,需要转换成数值格式,前面加–转换即可。按照目前思路,嵌套SUMPRODUCT函数应该可以解决,可万万没想到,公式往下拉又出错了。

财务工作中,你是否遇到焦头烂额不知如何解决的问题呢?

(此处已添加小程序,请到今日头条客户端查看)

22/24就是代表22:00,因为一天24小时,也可以用TIME(22,0,0)。

=SUMPRODUCT(–(–LEFT(RIGHT(B2:AF2,6),5)>=22/24))/2

打卡记录转换成考勤表-考勤表,才是真正检验Excel水平的试金石插图2

卢子找了一个没有打卡记录的单元格测试,发现问题就出在这里。

打卡记录转换成考勤表-考勤表,才是真正检验Excel水平的试金石插图3

有错误值,再嵌套一个IFERROR函数,让错误值显示0,这个是数组公式,输入公式后按Ctrl+Shift+Enter三键结束。

=SUM(–(IFERROR(–LEFT(RIGHT(B3:AF3,6),5)>=22/24,0)))/2

打卡记录转换成考勤表-考勤表,才是真正检验Excel水平的试金石插图4

经过了反复测试,终于可以了,真不容易。

3.合计

两个天数相加即可。

=AH3+AI3

这种数据还不是最垃圾,比这个更垃圾的还有,真的吐血的心都有。留着改天心情好再说。