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

如何在 Excel 中計算兩個日期時間之間經過的時間、天數、月數或年數?

作者修改日期

當您在 Excel 中管理排程、追蹤專案時程或分析事件記錄時,經常需要計算兩個特定時間點之間經過的時間。舉例來說,假設您有兩組清單,一組是開始時間,另一組是結束時間,您可能希望快速算出每一列對應的經過時間,如下方截圖所示。這項功能對於製作工時報表、計算年齡或監控截止日期極具價值。
顯示 Excel 中一組開始與結束時間的螢幕截圖

使用公式計算經過的時間/天數/月數/年數

使用 VBA 程式碼直接計算經過時間


使用公式計算經過的時間/天數/月數/年數

計算經過時間

Excel 能輕鬆計算兩個時間點之間的差異,適用於員工輪班追蹤、周轉時間計算或專案進度監控等情境。若時間範圍落在同一天內,請依照下列步驟操作:

1. 點選您希望顯示經過時間的空白儲存格(例如 C2),並輸入下列公式:

=IF(B2<A2,1+B2-A2, B2-A2)
A2 應包含開始時間,B2 則為結束時間。此公式能妥善處理結束時間早於開始時間的情況(例如跨午夜的輪班),確保計算結果精準無誤。

2. 輸入公式後,按下 Enter。若要將此公式套用至其他列,請使用填滿控點:點選儲存格右下角的小方塊並向下拖曳,即可一次計算多筆資料的經過時間!

3. 保持結果儲存格處於選取狀態,按滑鼠右鍵開啟內容功能表,並選擇設定儲存格格式。在設定儲存格格式對話方塊中,切換至數字頁籤,從左側清單選取時間,再於右側挑選您偏好的時間格式(例如 hh:mm、h:mm:ss 等),讓經過時間清晰呈現!
顯示 Excel 中用於設定時間格式的「儲存格格式」對話框的螢幕截圖

4. 按一下確定以套用格式設定,時間數值將依您所選格式顯示,讓總時長更易解讀!

額外提示:

  • 請務必將開始時間與結束時間欄位設定為有效的 Excel 時間格式,以避免發生錯誤。
  • 若您預期部分結束時間落在隔日(例如夜班),上述公式會在必要時自動加上 1(代表完整的一天),以正確處理此情況。
  • 若出現「#VALUE!」錯誤,請檢查來源儲存格是否包含空白或格式不正確的資料。

計算經過的天數、月數或年數

計算兩個日期之間的天數、月數或年數,廣泛應用於專案規劃、服務期間及年齡計算。以下是各類情境的高效做法:

計算經過天數時,請點選空白儲存格(例如 C2),並輸入下列公式:

=B2-A2
此處 A2 為開始日期,B2 為結束日期。請按下 Enter 然後,向下拖曳填滿控點以計算其他列。
顯示 Excel 中用於計算經過天數的公式的螢幕截圖

注意事項:請確保兩個日期皆採用 Excel 的日期格式,否則結果可能不正確。若您只需計算完整天數(忽略小時與分鐘),此公式即適用!

若要計算兩個日期之間的月數,請在空白儲存格中輸入:

=DATEDIF(A2,B2,"m")
此公式會傳回完整的經過月數。若需計入不足一個月的部分,可結合天數來呈現帶小數的月數。

若要計算年數(含小數部分),請使用:

=DATEDIF(A2,B2,"y")
若您希望以小數形式表示年數,可嘗試 =DATEDIF(A2,B2,"m")/12 並將結果儲存格格式設定為數字,以獲得更高的精確度。

注意事項:

  • 若結束日期早於開始日期,這些公式將傳回負值——建議加入驗證機制。
  • 務必仔細輸入 DATEDIF 函數;一旦拼寫錯誤,Excel 就會傳回「#NAME?」錯誤,因為此函數並未列在 Excel 的標準函數清單中。

以組合格式計算經過的年數、月數與天數

若您的任務需要更精細的時間拆解(例如「2 年 6 個月 19 天」),Excel 可透過結合 DATEDIF 函數輕鬆實現。此方法特別適用於計算員工服務年資、年齡,或任何需明確區分年、月、日的場合。

選取空白儲存格(例如 C2),並輸入下列公式:

=DATEDIF(A2,B2,"Y") & " Years, " & DATEDIF(A2,B2,"YM") & " Months, " & DATEDIF(A2,B2,"MD") & " Days"
接著按下 Enter 此公式結合多個 DATEDIF 計算,生成易讀的字串,清晰呈現精確的經過時間區間。
顯示 Excel 中用於計算兩個日期之間相隔年、月、日的公式的螢幕截圖

若需將公式套用至多列,請如前所述使用填滿控點。建議將結果欄位的格式設為「一般」,以確保文字正確顯示。

實用提示:若您的計算涵蓋閏年或天數不同的月份,無須擔心,DATEDIF 會依據實際曆法精確計算月數與年數!

疑難排解與提醒:

  • 務必仔細檢查您的來源資料,確認是否含有空白儲存格,或日期/時間格式有誤。
  • 若發現錯誤,請將輸入欄位重新設定為「日期」或「時間」格式,以統一資料格式。
  • 若編輯來源儲存格後公式未自動更新,請按 F9 強制重新計算,或確認 Excel 選項中已啟用「自動計算」功能。

使用 VBA 程式碼計算兩個日期時間之間的經過時間

若您需要自動化計算或處理大型資料集,VBA 是極其實用的工具。例如,您可以將經過時間的結果合併至單一儲存格,或根據需求自訂計算方式。

1. 前往開發人員工具Visual Basic,此時將開啟全新的 Microsoft Visual Basic for Applications 視窗。點選插入 模組,並貼上下列程式碼:

Sub CalcElapsedTimeBySelection()
    Dim startRange As Range
    Dim endRange As Range
    Dim outputCell As Range
    Dim ws As Worksheet
    Dim i As Long
    Dim rowCount As Long
    Dim elapsedTime As Double
    Dim startTime As Variant, endTime As Variant
    Dim xTitleId As String
    
    xTitleId = "Kutools for Excel"
    On Error Resume Next
    
    ' Prompt user for ranges
    Set startRange = Application.InputBox("Select the range for Start Time:", xTitleId, Type:=8)
    If startRange Is Nothing Then Exit Sub
    
    Set endRange = Application.InputBox("Select the range for End Time:", xTitleId, Type:=8)
    If endRange Is Nothing Then Exit Sub
    
    Set outputCell = Application.InputBox("Select the top-left cell for output results:", xTitleId, Type:=8)
    If outputCell Is Nothing Then Exit Sub
    
    On Error GoTo 0
    
    ' Check matching range sizes
    If startRange.Rows.Count <> endRange.Rows.Count Then
        MsgBox "The start and end time ranges must have the same number of rows.", vbExclamation, xTitleId
        Exit Sub
    End If
    
    ' Loop through rows
    rowCount = startRange.Rows.Count
    For i = 1 To rowCount
        startTime = startRange.Cells(i, 1).Value
        endTime = endRange.Cells(i, 1).Value
        
        If IsNumeric(startTime) And IsNumeric(endTime) Then
            elapsedTime = CDbl(endTime) - CDbl(startTime)
            ' Handle next-day (cross-midnight) case
            If elapsedTime < 0 Then elapsedTime = elapsedTime + 1
            outputCell.Offset(i - 1, 0).Value = elapsedTime
            outputCell.Offset(i - 1, 0).NumberFormat = "[h]:mm:ss"
        Else
            outputCell.Offset(i - 1, 0).Value = "Invalid Time"
        End If
    Next i
    
    MsgBox "Elapsed times calculated successfully for " & rowCount & " rows.", vbInformation, xTitleId
End Sub

2. 點選執行按鈕按鈕以執行程式碼。系統將提示您選取開始時間、結束時間,以及輸出經過時間的位置,結果將以時間格式呈現。

當您需要進一步自訂計算或格式,並在處理極大型試算表時節省寶貴時間,此 VBA 方法特別有效。


最佳 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 天完整功能試用— 無需註冊,無需信用卡
  • 超值之選— 比單獨購買各增益集更省費用