excel计算考勤公式

我正在用的是:INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2
只是简单把工作时间算了出来

想加入中午吃饭“扣除一小时”,及超过20点没有下班,晚餐休息时间“扣除一小时”

单元格B2输入公式
=IF(COUNTIF(G2:M2,MIN(G2:M2,"11:00:00"))<1,DAY(F2)&"号缺上午上班考勤","")&IF(COUNTIF(G2:M2,MAX(G2:M2,"12:00:00"))<1,DAY(F2)&"号缺下午上班考勤","")

单元格A2输入数组公式(输入公式后,同时按下Ctrl+Shift+Enter)
=IF(COUNTIF(G2:M2,"<=7:03:00")>0,0,MIN(IF(G2:M2-"7:03:00">0,G2:M2,""))-"7:00:00")+IF(COUNTIFS(G2:M2,">11:00:00",G2:M2,"<=13:03:00")>0,0,MIN(IF(G2:M2-"13:03:00">0,G2:M2,""))-"13:00:00")

注意:这个得到的迟到时间(上午迟到时间+下午迟到时间),缺少考勤时(旷工)会把
旷工时间也加在里面。

如果旷工不算在迟到时间里面,可以改用下面的数组公式
=IF(OR(COUNTIF(G2:M2,"<=7:03:00")>0,MIN(G2:M2)-"11:00:00">0),0,MIN(IF(G2:M2-"7:03:00">0,G2:M2,""))-"7:00:00")+IF(OR(COUNTIFS(G2:M2,">11:00:00",G2:M2,"<=13:03:00")>0,MAX(G2:M2)-"12:00:00"<0),0,MIN(IF(G2:M2-"13:03:00">0,G2:M2,""))-"13:00:00")
(输入公式后,同时按下Ctrl+Shift+Enter)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-19
想加入中午吃饭“扣除一小时",则多减60分钟:
=INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-60

再加超过20点没有下班,晚餐休息时间“扣除一小时”,则多减60分钟,否则不减:
=IF(D2>20/24,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-120,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-60)追问

上班时间 下班时间

8:00 17:47
-50……

追答

如果你原来的公式无问题,新的就无问题。

追问

好的……那么0:00到0:00基础数字是-60,就算是-60分钟……也是-1小时,没来上班就扣一小时是异世界的规定吗

追答

想加入中午吃饭“扣除一小时",设中午休息时间为12:00-13:00,则多减60分钟:
=IF(D2>13/24,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-60,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2)

再加超过20点没有下班,晚餐休息时间“扣除一小时”,则多减60分钟,否则不减:
=IF(D2>20/24,IF(D2>13/24,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-60,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2)-60,IF(D2>13/24,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2-120,INT((HOUR(ABS(C2-D2))*60+MINUTE(ABS(C2-D2)))/30)/2))

追问

上班时间
下班时间
工作时长

8:00 13:00 5

8:00 21:00 -107

谢谢……虽然没有成功
但是公式好长……

追答

黑心老板克扣工人工时,工人9.78的工时为何你算成了9.5工时???!!!

 

你怎么不说给工人计算认真些?你自己原来的公式写不好怪谁?

 

这是我用心写的公式,可能还有考虑不周的地方,请其他知道的朋友帮我检查校对,也请你用良心为工人认真做事,并采纳使用:

 

公式可从附件中复制即可:

1、要简单把工作时间算了出来,E2用公式:=D2-C2 ,格式选择hh:mm格式,

    F2工时:=(D2-C2)*24 ,并用格式刷在表空白复制通用数字格式到格上即可。


2、扣中午时间一小时:E3用公式:=IF(OR(C3<12/24,D3>13/24),D3-C3-1/24,D3-C3),格式选择hh:mm格式,这里考虑了12:00后才上班、或13:00前已下班的不扣午餐时间1小时;

    F3工时处理同上。

 

3、考虑扣晚餐时间一小时:E4用公式=IF(D4<20/24,IF(OR(C4<12/24,D4>13/24),D4-C4-1/24,D4-C4),IF(OR(C4<12/24,D4>13/24),D4-C4-1/24,D4-C4)-1/24) 

格式选择hh:mm格式,这里再考虑了22:00后才下班则扣晚餐时间1小时;

    F3工时处理同上。

 

  祝

顺利

 

追问

不是扣工时,老板给的休息时间非常充裕,午餐和晚餐确实都有一小时以上休息时间……

而且早上工人来工作也 不 会 马 上 开 始 工 作,会有吃早餐和休息聊天的情况,所有时间加起来以后“不到半小时按半小时”计算其实并没有你说的黑心情况,而且更方便统计。

我试试看你的工作表……说真的我忙成狗,这不到我工作二十分之一的内容真是不想浪费太多精力,工资也不是完全按照它计算的

追答

不到半小时按半小时:=INT(E2*24*2+0.5)/2

你算的是不到半小时不算数:=INT(E2*24*2)/2

追问

那是我的语言表达问题,就是不到半小时不算数
顺便一提我——是——打——卡——的

上班 下班 工作时间 工时

8:00 9:00 1:00 1

8:00 9:00 0:00 5E-16

8:00 9:00 0:00 5E-16

已经…不想努力了,加班多-2,不加班-1

追答

 我把正确的改错了,现更正如下:

 

公式可从附件中复制即可:

1、要简单把工作时间算了出来,E2用公式:=D2-C2 ,格式选择hh:mm格式,

    F2工时:=INT((D2-C2)*24*2)/2,并用格式刷在表空白复制通用数字格式到格上即可。


2、扣中午时间一小时:E3用公式:=IF(AND(C3<12/24,D3>13/24),D3-C3-1/24,D3-C3),格式选择hh:mm格式,这里考虑了12:00后才上班、或13:00前已下班的不扣午餐时间1小时;

    F3工时处理同上。

 

3、考虑扣晚餐时间一小时:E4用公式=IF(D4<20/24,IF(AND(C4<12/24,D4>13/24),D4-C4-1/24,D4-C4),IF(AND(C4<12/24,D4>13/24),D4-C4-1/24,D4-C4)-1/24) 

格式选择hh:mm格式,这里再考虑了22:00后才下班则扣晚餐时间1小时;

    F3工时处理同上。

 

你就用第三个公式,就考虑了扣中午时间一小时、扣晚餐时间一小时。即:加班多-2,不加班-1。

请你再试试。

本回答被提问者和网友采纳
相似回答