KutoolsforOffice — 一套方案,五大工具。事半功倍。三月特賣:20% 折扣

如何在 Excel 中計算跨越午夜的兩個時間點之間的小時數?

作者Xiaoyang修改日期

假設您正在 Excel 中管理員工排班表,需要追蹤從當日晚間開始、跨越午夜延續至隔日的工作時段。例如,A 欄記錄當日的開始時間,B 欄則登錄隔日凌晨的結束時間。當您使用簡單的減法公式(如「=B 2-A2」)計算時間差時,Excel 會顯示錯誤或負值結果(如下圖所示)。這是因為 Excel 的時間系統在午夜歸零,導致直接相減無法正確處理跨午夜的時段。那麼,在 Excel 中該如何準確計算結束時間落在午夜之後的兩時間點之間的總工時呢?
用一般公式計算午夜後的時間間隔會得到錯誤結果

使用公式計算跨午夜兩時間點之間的小時數

使用 VBA 程式碼計算跨午夜兩時間點之間的小時數(進階自動化)


使用公式計算跨午夜兩時間點之間的小時數

若要精準計算結束時間跨越午夜的兩個時間點之間的小時數,可使用一個能妥善處理跨日時間差的簡易公式。此方法適用於中小型資料集,或僅需處理跨越午夜時段的簡單情境。

運作原理:公式「=(B 2-A 2+(B2<A2))*24」會先判斷結束時間(B2)是否早於開始時間(A2)。若是,則自動加上 1 天(因 Excel 將時間儲存為 24 小時的小數部分),確保計算結果永遠為正數小時。

1. 請在時間資料旁的空白儲存格(例如 C2)輸入下列公式:

=(B2-A2+(B2<A2))*24

說明:此處,A2 為開始時間,B2 為結束時間(跨越午夜)。請依您的資料配置調整儲存格參照。

使用公式計算午夜後兩個時間之間的小時數

2. 輸入公式後按下 Enter 鍵,再利用填滿控點向下拖曳至其他適用的儲存格,Excel 將立即計算時間差,並自動處理跨午夜的情況!

拖曳並填滿公式至其他儲存格

提示:

  • 確保所有時間儲存格皆設定為時間(按一下滑鼠右鍵 > 設定儲存格格式 > 時間)。
  • 此公式會以小數形式輸出小時數。若需以「小時與分鐘」格式顯示結果,可使用 TEXT 函數,例如 =TEXT(B2-A2+(B2<A2),"h:mm");但當您需要進行薪資計算或報表製作等涉及小數小時的運算時,原始公式仍是最佳選擇!
  • 若您的資料包含無效的時間項目,請檢查是否有拼字錯誤,或確認這些值是否已正確被 Excel 識別為時間格式。

常見錯誤:

  • 若出現 #VALUE!錯誤,請再次確認兩欄均包含有效的時間值,而非文字。
  • 負值或異常結果通常表示公式參照的位置發生偏移,或時間未正確輸入。

摘要:此解決方案適用於一般輪班排程或簡單的隔夜時間追蹤,前提是您的資料採用標準雙欄格式,且無需處理更複雜的業務邏輯。


使用 VBA 程式碼計算跨午夜兩時間點之間的小時數(進階自動化)

若您需要處理大量打卡資料,或希望針對複雜情境(例如自訂進位規則、排除特定時段或彈性休息時間)自動計算工時,使用 VBA 巨集不僅能節省時間,還能有效減少手動錯誤。此方法特別適合進階使用者,或需應對不斷變化的輪班模式、特殊截止條件及批次處理需求的場合。

適用情境:當您符合以下條件時,建議選擇此方案:

  • 經常需要處理數百甚至數千列資料
  • 需要比基本跨午夜計算更複雜的邏輯(例如:彈性加班規則、午休扣除)
  • 偏好能自動重新計算且只需極少手動輸入的解決方案

 

缺點:使用者必須熟悉巨集啟用流程,且收到此活頁簿的人員也可能需要允許 VBA 或調整巨集安全性設定。

1. 開啟 Excel 工作表,並按下 Alt + F11 以啟動 Visual Basic for Applications (VBA)編輯器。在 VBA 介面中,點選插入 模組,建立新模組後,將下方程式碼貼上至程式碼視窗中:

Sub CalculateHoursAcrossMidnight()
    Dim rng As Range
    Dim cell As Range
    Dim startTime As Date
    Dim endTime As Date
    Dim resultCol As Integer
    
    On Error Resume Next
    xTitleId = "KutoolsforExcel"
    
    Set rng = Application.Selection
    Set rng = Application.InputBox("Select the range containing start and end times (two columns)", xTitleId, rng.Address, Type:=8)
    
    If rng Is Nothing Then Exit Sub
    
    resultCol = rng.Columns(rng.Columns.Count).Column + 1
    
    For Each cell In rng.Columns(1).Cells
        startTime = cell.Value
        endTime = cell.Offset(0, 1).Value
        
        If IsDate(startTime) And IsDate(endTime) Then
            If endTime < startTime Then
                cell.Offset(0, 2).Value = (endTime - startTime + 1) * 24
            Else
                cell.Offset(0, 2).Value = (endTime - startTime) * 24
            End If
        Else
            cell.Offset(0, 2).Value = "Invalid Time"
        End If
    Next cell
    
    MsgBox "Calculation complete! Hours between times after midnight are now in the next column.", vbInformation, xTitleId
End Sub

2. 若要執行巨集,請先關閉 VBA 編輯器並返回 Excel,再選取工作表中同時包含開始與結束時間的範圍,然後按下 F5 鍵 或按一下執行按鈕

巨集將提示您選取包含開始與結束時間(並排)的範圍,計算結果(已調整跨午夜的小時數)會輸出至您資料區域右側的欄位中。

提示與疑難排解:

  • 開始時間與結束時間兩欄皆須填入有效的日期/時間值;格式無法辨識的儲存格將標示為「無效時間」。
  • 若要在其他工作表中重複使用或調整此巨集,請根據需求修改選取範圍或微調欄位偏移量。
  • 若巨集無法顯示或執行,請透過調整 Excel 的安全性設定來啟用巨集(檔案 > 選項 > 信任中心 > 巨集設定)。
  • 此方法可進一步調整,以符合您的自訂業務規則;您可視需求在 VBA 程式碼中加入休息時間、時間進位或加班計算等額外邏輯。

摘要:自動化 VBA 方法特別適合需要管理大型排班表、反覆執行計算,或針對時間管理實作組織專屬邏輯的使用者。一旦設定完成,即可免除重複的手動作業,大幅降低隔夜班次的計算錯誤風險!

kutools for excel AI 的螢幕截圖

透過 KUTOOLS AI 解鎖 Excel 的神奇功能

  • 智慧執行:透過簡易指令,輕鬆執行儲存格操作、分析資料,並建立圖表!
  • 自訂公式:打造專屬公式,讓您的工作流程更順暢!
  • VBA 編碼:輕鬆撰寫並套用 VBA 程式碼,立即提升工作效率!
  • 公式解析:輕鬆掌握複雜公式!
  • 文字翻譯:輕鬆打破試算表中的語言隔閡!
運用 AI 驅動的工具強化您的 Excel 能力。立即下載體驗前所未有的高效!

最佳 Office 生產力工具

🤖KUTOOLS AI 助手:基於以下內容徹底革新數據分析:智慧執行     產生程式碼  建立自訂公式    分析資料並產生圖表  呼叫增強函數……
熱門功能尋找、醒目提示或標記重複值     刪除空白行     合併列或儲存格而不遺失資料     不使用公式的四捨五入……
高級 LOOKUP多重條件 VLookup    多重數值 VLookup     跨多個工作表 VLookup      模糊查找……
高級下拉列表快速建立下拉式清單     相依式下拉式清單     多選下拉式清單……
欄位管理員新增指定數量的欄位移動欄位切換隱藏欄位的可見狀態比較範圍與欄位……
精選功能網格聚焦     設計視圖   增強編輯欄    工作簿與工作表管理員     資源庫(自動文字)  日期提取     合併工作表    加密/解密儲存格    依清單傳送電子郵件     超級篩選      特殊篩選(篩選粗體儲存格/斜體/刪除線……) ......
頂尖 15 工具組12 文字工具添加文本刪除特定字符,……)   50+ 圖表 類型甘特圖,……)   40+ 實用公式基於生日計算年齡,……)   19 插入工具插入二維碼從路徑插入圖片,……)   12 轉換工具金額轉大寫匯率轉換,……)   7 合併和拆分工具高級合併行分割儲存格,……)……以及更多
在您的慣用語言中使用 Kutools—支援英文、西班牙文、德文、法文、中文及另外 40+ 種語言!

運用 Kutools for Excel 強化您的 Excel 技能,體驗前所未有的高效能!Kutools for Excel 提供超過 300 項進階功能,大幅提升生產力並節省寶貴時間。立即點擊,取得您最需要的功能……


Office Tab 為 Office 帶來分頁式介面,讓您的工作更輕鬆自在!

  • 在 Word、Excel、PowerPoint 中啟用分頁式編輯與閱讀功能,以及 Access、Visio 與 Project。
  • 在同視窗的新分頁中開啟並建立多份文件,而非另開新視窗。
  • 每天為您提升 50% 的工作效率,並省下數百次滑鼠點擊!

所有 Kutools 增益集,一個安裝程式

Kutools for Office 套件整合了 Excel、Word、Outlook 與 PowerPoint 的增益集,以及 Office Tab Pro,非常適合需要跨多個 Office 應用程式協作的團隊使用!

ExcelWordOutlookTabsPowerPoint
  • 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
  • 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
  • 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
  • 30 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用