要在 Excel 中計算工時表時數,先用下班打卡時間減去上班打卡時間,再乘以 24 換算成十進位小時數,然後扣掉未支薪的休息分鐘數:=((C2-B2)*24)-(D2/60)。對於跨夜的班別,把這個時間差包在一個 IF 判斷裡,當下班時間早於上班時間時就加 1,並使用 SUM,把一整週每天的時數,合計成一個週總數。Excel 把每一個時間都儲存為一天 24 小時中的一個分數,因此 09:00 實際上是 0.375,17:30 則是 0.7291667——乘以 24 這個動作,會把這個分數還原成你在工時表上預期看到的 8.5 小時。如果沒有乘以 24,=(C2-B2) 會回傳 0.3541667,這在數學上雖然正確,讀起來卻是一個令人困惑的小數,會讓後續任何薪資計算出錯。一旦你把這些公式建進一個七列的小表格裡,從星期一到星期日各佔一列,同樣的模式就能套用到你需要追蹤的任何一週與任何一種薪資排程。

calculate timesheet hours in excel
calculate timesheet hours in excel

在 Excel 中建立工時表版面

在任何公式運作之前,欄位必須先建立好。開啟一張空白工作表,依照以下順序設定標題與格式:

  1. 把 A1 到 D1 的儲存格,分別標記為Day(日期)Clock In(上班時間)Clock Out(下班時間)Break (min)(休息分鐘)
  2. 在 A 欄中,輸入星期一到星期日這七個平日與週末名稱,一列一個,往下填到 A8。
  3. 選取儲存格 B2:C8,並在「儲存格格式」中套用時間格式 h:mm,讓每一筆輸入都被判讀為時間值。
  4. 在你實際工作的那幾列中,以 24 小時制輸入上班與下班時間(早上九點輸入 09:00,下午五點輸入 17:00),其他列則留空。
  5. 把 D 欄格式化為一般數字,並在每一天輸入未支薪的休息分鐘數,同樣把空白的列留空。

任何沒有上班的日子,只要把該列的三個輸入儲存格全部留空即可;Excel 會把它們視為零,因此週總計仍然會保持準確,不需要額外清理。如果你喜歡,也可以在 E 欄加上Hours(時數)欄,在 F 欄加上Notes(備註)欄,但 B、C、D 這四個輸入項目,已經足夠驅動後面所有的公式。每一列時數的參照儲存格,就是 E 欄中對應的那一格,下一節會說明它應該放入的公式。

核心公式:由上班與下班時間算出每日時數

任何工時表中最重要的一條公式,會把一組上班與下班時間,轉換成一個十進位的時數。把這條公式放進星期一那一列的 E2 儲存格:

=((C2-B2)*24)-(D2/60)

Excel 會把時間差 C2-B2 讀取為一天的分數,乘以 24 把它換算成小時,再扣掉休息分鐘數——除以 60 換算成同樣的十進位小時單位。以星期一那一列為例,B2 填入 09:00、C2 填入 17:30、D2 填入 30,計算結果為:((17.5 - 9.0) × 24) - (30 ÷ 60) = 8.5 - 0.5 = 8.00 小時。把這條公式往下拖曳,填滿 E2 到 E8 其餘的整週儲存格;Excel 會自動調整每一列的儲存格參照,讓每一列都使用自己的輸入資料。

扣除未支薪休息時間與處理跨夜班別

上面提到的休息時間扣除方式,適用於任何標準的朝九晚五班別。工時表計算真正的兩個難題,是會侵蝕總時數的未支薪休息時間,以及跨越午夜的夜班。

對於較長的未支薪休息時間,只要休息時間短於班別本身,這條公式仍然成立——只是當天的總時數會相應減少。如果休息時間不知怎麼地比班別還長,這條公式就會回傳一個負數,這通常不是你想要的結果。把整個算式包進 MAX(0, ((C2-B2)*24)-(D2/60)),就能把當天的數值限制在零,而不會低於零。這個單一的保護機制,符合薪資系統處理不合理輸入的方式,也能避免整週總計,因為單一天輸入錯誤而被拖累。

對於跨夜的班別,直接寫 C2-B2 會回傳一個負的分數,因為 06:00(0.25)在數值上比 22:00(0.9167)小。解決方法是判斷哪個時間比較大,並在班別跨過午夜時,加上整整一天:

=IF(C2<B2, ((C2-B2+1)*24)-(D2/60), ((C2-B2)*24)-(D2/60))

把它套用在填入 22:00、06:00 與 0 休息分鐘的星期二那一列上做測試:因為 06:00 < 22:00,IF 會走第一個分支,計算出 (0.25 - 0.9167 + 1) × 24 = 0.3333 × 24 = 8.00 小時,恰好等於一個八小時夜班的長度。如果上班與下班時間完全相同,結果會落在 0.00 小時,這對於一個打錯字或休假的日子而言,才是正確的讀數,而不會顯示成一個 24 小時的馬拉松班。

用 SUM 加總一整週

E 欄裡放的是每天的時數,週總計就只需要一次 SUM 呼叫。在 E9 儲存格(或任何你想放總計的地方),輸入 =SUM(E2:E8),並把儲存格格式設定為兩位小數。這個函式會自動略過空白儲存格,因此一個有兩天空白的五天工作週,就只會加總那五個已填入的儲存格,而一個壓縮成四天的工作週,也不需要任何 IF 判斷式,就能正確計算出缺勤日的總計。

如果你還想估算週薪,可以在一個標示清楚的儲存格(例如 B11)中放入時薪,並使用 =SUM(E2:E8)*$B$11。錢字符號會在你複製公式時,鎖定住薪資的參照儲存格。這種格式的時間資料,同樣適用於時薪請款、薪資單,以及個人時間追蹤,這也是為什麼你在網路上找到的幾乎每一份工時表範本,都會用到相同的四個欄位。

以上面星期一、星期二、星期三這幾列為例,做一個更完整的實例演練——分別是 8.00、8.00 與 4.00 小時,其餘幾天留空——週總計會是 8.00 + 8.00 + 4.00 = 20.00 小時。乘以一個儲存的時薪,例如 $25.00,同樣的公式會得出 20.00 × 25.00 = $500.00 的估計薪資。這裡把算式完整列出,這樣每一個步驟都可以對照試算表逐一檢查。

一個更快速的瀏覽器替代方案

公式確實有效,但也需要你自己建立欄位、往下複製公式、格式化儲存格,並記住每一個參照代表什麼意思。對大多數只想確認一週時數的人來說,這些都是他們寧可跳過的額外工作。工時表計算器在單一頁面上做著同樣的運算:以 24 小時制輸入每一天的上班、下班時間與休息分鐘數,每日時數、週總計,以及可選的薪資估算,就會立刻顯示出來。空白的日子會自動被跳過,跨夜班別會被偵測到並自動延到隔天早上,休息分鐘數也會被限制在零,而不會產生負數。

這項工具還處理了兩項手工試算表無法免費取得的額外功能:一個可選的加班規則,讓你設定自己的週工時門檻與倍率(一個常見的起始值是 40 小時搭配 1.5 倍,預設會先填好,但預設關閉),以及一個貨幣選擇器,讓薪資數字能以正確的千分位分隔符號顯示出來。一切都是用純 JavaScript 在你的瀏覽器本機運作,因此時間、休息時間與時薪,永遠不會離開你的電腦。對輪班工作者、需要核對計費時數的自由工作者,以及正在準備單週薪資單的小型企業主而言,這種速度通常就是決定性的因素。

常見的工時表工作Excel 公式它的作用
每日時數,不扣休息=(C2-B2)*24把下班時間減去上班時間,再把結果換算成小時。
每日時數扣除休息=((C2-B2)*24)-(D2/60)從每日總時數中,扣除未支薪的休息分鐘數。
跨夜班別=IF(C2<B2, ((C2-B2+1)*24)-(D2/60), ((C2-B2)*24)-(D2/60))當下班時間早於上班時間時,加上整整一天。
限制不低於零=MAX(0, ((C2-B2)*24)-(D2/60))當休息時間超過班別時間時,避免當天時數變成負數。
週總計=SUM(E2:E8)加總這一週所有的每日時數。
估計週薪=SUM(E2:E8)*$B$11把週總計乘以一個儲存的時薪。

何時該用 Excel,何時該用工時表計算器

當你需要一份永久、可稽核的紀錄時——一份與發票、專案時數,或薪資日誌並存在同一個活頁簿裡的工時表——Excel 就能發揮它的優勢。它也讓你可以建立條件邏輯(加班級距、班別差異津貼、假日薪資),這是單頁計算器無法比擬的。如果你的活頁簿成長到超出一份簡單七列表格的規模,需要在多個工作表之間重複使用同一套換算方式,把時間換算成十進位小時的指南會更深入地說明相同的 *24 技巧。

如果你想要一個不需要設定、能立刻得到答案的方式,或是想在簽核前快速核對一份排班表或薪資單,又或者根本不想維護一份試算表範本,那麼「工時表計算器」就是更好的選擇。因為所有計算都在你的瀏覽器裡完成,你可以嘗試好幾種假設情境——不同的休息時間長度、多一個班次、調整薪資——並立刻看到總計更新,而不需要重新輸入公式。你嘗試的每一種情境都保持私密,因為沒有任何資料會被上傳,也不會在網頁重新載入之間被儲存。

不論你走哪一條路,背後的數學原理都一樣:把每個時間換算成分鐘,扣掉未支薪休息時間,把每天加總起來,再套用薪資費率。Excel 是用欄位把這個過程攤開來;「工時表計算器」則把它濃縮成一張單一的填寫表單。挑選符合你今天要解決的問題的版本,並在任務從一次性核對,變成一份長期運作的薪資檔案時,自由切換工具。

如果你正在權衡各種選項,用 (1/3)πr²h 公式計算圓錐體積對此有詳細說明。