如何在 Excel 中計算兩個日期時間之間經過的時間、天數、月數或年數?
當您在 Excel 中管理排程、追蹤專案時程或分析事件記錄時,經常需要計算兩個特定時間點之間經過的時間。舉例來說,假設您有兩組清單,一組是開始時間,另一組是結束時間,您可能希望快速算出每一列對應的經過時間,如下方截圖所示。這項功能對於製作工時報表、計算年齡或監控截止日期極具價值。
使用公式計算經過的時間/天數/月數/年數
計算經過時間
Excel 能輕鬆計算兩個時間點之間的差異,適用於員工輪班追蹤、周轉時間計算或專案進度監控等情境。若時間範圍落在同一天內,請依照下列步驟操作:
1. 點選您希望顯示經過時間的空白儲存格(例如 C2),並輸入下列公式:
=IF(B2<A2,1+B2-A2, B2-A2)A2 應包含開始時間,B2 則為結束時間。此公式能妥善處理結束時間早於開始時間的情況(例如跨午夜的輪班),確保計算結果精準無誤。2. 輸入公式後,按下 Enter。若要將此公式套用至其他列,請使用填滿控點:點選儲存格右下角的小方塊並向下拖曳,即可一次計算多筆資料的經過時間!
3. 保持結果儲存格處於選取狀態,按滑鼠右鍵開啟內容功能表,並選擇設定儲存格格式。在設定儲存格格式對話方塊中,切換至數字頁籤,從左側清單選取時間,再於右側挑選您偏好的時間格式(例如 hh:mm、h:mm:ss 等),讓經過時間清晰呈現!
4. 按一下確定以套用格式設定,時間數值將依您所選格式顯示,讓總時長更易解讀!
額外提示:
- 請務必將開始時間與結束時間欄位設定為有效的 Excel 時間格式,以避免發生錯誤。
- 若您預期部分結束時間落在隔日(例如夜班),上述公式會在必要時自動加上 1(代表完整的一天),以正確處理此情況。
- 若出現「#VALUE!」錯誤,請檢查來源儲存格是否包含空白或格式不正確的資料。
計算經過的天數、月數或年數
計算兩個日期之間的天數、月數或年數,廣泛應用於專案規劃、服務期間及年齡計算。以下是各類情境的高效做法:
計算經過天數時,請點選空白儲存格(例如 C2),並輸入下列公式:
=B2-A2 此處 A2 為開始日期,B2 為結束日期。請按下 Enter 然後,向下拖曳填滿控點以計算其他列。
注意事項:請確保兩個日期皆採用 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 計算,生成易讀的字串,清晰呈現精確的經過時間區間。
若需將公式套用至多列,請如前所述使用填滿控點。建議將結果欄位的格式設為「一般」,以確保文字正確顯示。
實用提示:若您的計算涵蓋閏年或天數不同的月份,無須擔心,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 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 應用程式協作的團隊使用!
- 全能套件— 包含 Excel、Word、Outlook 與 PowerPoint 增益集,以及 Office Tab Pro
- 一個安裝程式,一個授權— 數分鐘內即可完成設定(支援 MSI)
- 協同運作更出色— 在多個 Office 應用程式間實現流暢的生產力體驗
- 30 天完整功能試用— 無需註冊,無需信用卡
- 超值之選— 比單獨購買各增益集更省費用