C2 ==IF(AND(A2<=TIME(12,0,0),B2<TIME(13,0,0)),(B2-A2)*24,IF(AND(A2<=TIME(12,0,0),B2>=TIME(13,0,0),B2<=TIME(17,0,0)),(B2-A2)*24-1,IF(AND(A2<=TIME(12,0,0),B2>=TIME(13,0,0),B2>TIME(17,0,0)),(TIME(17,0,0)-A2)*24-1,IF(AND(A2>=TIME(13,0,0),B2<=TIME(17,0,0)),(B2-A2)*24,IF(AND(A2>=TIME(13,0,0),B2>=TIME(17,0,0)),(TIME(17,0,0)-A2)*24,"")))))D2 ==IF(AND(B2>TIME(17,0,0)),(B2-TIME(17,0,0))*24-0.5,"")
您原本的公式中少了一部份的判斷,就是下班時間為下午時,要再判斷上班時間是否在十二點前,是的話最後的值才需減一,如上班時間在下午一點後,則不需減一!ps.建議將公式中的 12:00, 13:00, 17:00 放在第一列當標準值,這樣可簡化並縮短公式的長度,且日後若變更中午休息時間及下班時間時,僅需修改第一列的標準值,而不用再修改公式內容!
(2018/07/06 12:34調整)公式詳解,請參考:https://goo.gl/CK7wWz2018/07/04 18:53 發布之教學,有下述瑕疵,故刪除之Mystique Hsiao wrote:發現部份情況下計算出的工時有誤!(皆出現於下班時間在十二點前,雖然實務上機率不高)