Excel怎么算加班时长? 根据考勤打卡数据计算加班次数加班时长技巧
脚本之家
有这样一份考勤表,现在需要对每位员工考勤做一次加班的统计,最后一次打卡时间大于等于20:00就计算为加班。20:00之后有多次打卡的,以最后一次打卡时间为准。
首先我们来计算加班次数
=COUNT(0/(--TEXTAFTER(B2:H2,CHAR(10),-1)>=5/6))
公式浅析:
①--TEXTAFTER(B2:H2,CHAR(10),-1)
先使用TEXTAFTER函数在B2到H2单元格区域的每个单元格的文本内容里,以换行符(通过CHAR(10)来表示换行符这个字符)作为查找参照,提取出每个单元格文本中最后一次出现换行符之后的那部分文本内容,通过双负号转换为数值(时间)。
②--TEXTAFTER(B2:H2,CHAR(10),-1)>=5/6
将提取的内容做逻辑对比,大于等于5/6的,就是加班的日期,5/6=20/24,即20:00时。
③0/(--TEXTAFTER(B2:H2,CHAR(10),-1)>5/6)
0/TRUE=0,0/FALSE=#DIV/0!。由于有些单元格中没有打卡时间,计算出现N/A错误,不影响后面用COUNT函数计数。
④=COUNT(0/(--TEXTAFTER(B2:H2,CHAR(10),-1)>=5/6))
最后用COUNT计数,计算出加班次数。
再来计算加班时长
=SUM(IFERROR(--TEXT(TEXTAFTER(B2:H2,CHAR(10),-1)-5/6,"0.000000;"),))
公式浅析:
①TEXTAFTER(B2:H2,CHAR(10),-1)-5/6
先使用TEXTAFTER函数提取最后一次打卡时间减去20:00的时间即得到加班的时长,如果最后一次打卡时间小于20:00会出现负数。
②IFERROR(--TEXT(TEXTAFTER(B2:H2,CHAR(10),-1)-5/6,"0.000000;"),)
使用TEXT函数将正数显示成0.000000格式,负数不显示,在TEXT函数前面加一对双符号,将文本数字转换成数值。
再使用IFERROR函数屏蔽负数错误值和未打卡单元格的错误值。
③=SUM(IFERROR(--TEXT(TEXTAFTER(B2:H2,CHAR(10),-1)-5/6,"0.000000;"),))
最后使用SUM函数汇总加班时长。