这是,如果你的数据被巧妙布局,以解决一个非常简单的问题。列A为实时时钟和B列作为时钟输出时,使用这个公式作为一个辅助,以确定是否应该使用在时间上的时钟或您的06:00基地:
=IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))
然后使用这个公式来确定是否应使用时钟输出时间或20:00:
=IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))
然后你减去两个获得一天的分数,乘以24转换成小时,然后减去8得到加班时间1。组合的超级公式它看起来像这样在C1中:
OT1:=IF(OR(ISBLANK(A1),ISBLANK(B1)),"",(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))-IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2)))*24-8)
记住时,Excel格式的日期,其中1 = 24小时。另外,我在OR(ISBLANK(A1),ISBLANK(B1))
语句中添加了一个值,以确保在其中一个值为空时得到空字符串。
从加班2开始,您需要将其分为两部分:06:00之前和20:00之后。第一部分检查时钟是否早于06:00,如果是,则计算出多少小时。式最终结束是:
=IF(IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))<=6/24,(6/24-(A1-FLOOR(A1,2)))*24,0)
对于在20:00之后,使用相同的模式。确定20:00后每天记录多少部分。最终的公式最终被:
=IF(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))>=20/24,((B1-FLOOR(B1,2))-20/24)*24,0)
最后,为了弄清楚加班2的总数,只需添加两个公式一起在D1:
OT2:=IF(OR(ISBLANK(A1),ISBLANK(B1)),"",IF(IF(A1-FLOOR(A1,2)<6/24,6/24,A1-FLOOR(A1,2))<=6/24,(6/24-(A1-FLOOR(A1,2)))*24,0)+IF(IF(B1-FLOOR(B1,2)>20/24,20/24,B1-FLOOR(B1,2))>=20/24,((B1-FLOOR(B1,2))-20/24)*24,0))
可能[在Excel中计算加班时间]的副本(http://stackoverflow.com/questions/36667987/calculating-overtime-hours-in-excel) – LuFFy
这是相关的,但不是重复的。 OP有其他注意事项,但您的可能重复内容不存在。 – SandPiper