這是,如果你的數據被巧妙佈局,以解決一個非常簡單的問題。列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