Skip to main content

如何計算兩個日期之間的天數、週數、月數或年數?

Author: Xiaoyang Last Modified: 2025-08-06

在Excel中處理日期數據時,您可能經常需要確定兩個指定日期之間相隔的確切天數、週數、月數或年數。這種計算通常用於專案排程、員工任期分析、財務預測等。Excel提供了多種用戶友好的方法來計算這些差異,包括直接公式、內建功能以及可以簡化或自動化該過程的高級工具。本教程提供各種方法的逐步指導,以準確計算日期差異,幫助您為您的場景選擇最合適的解決方案。


使用公式計算兩個日期之間的天數

計算兩個日期之間的天數是Excel中最常見的日期相關任務之一。無論您是追蹤截止日期、計算持續時間還是監控累積期,Excel公式都可以幫助您準確地完成這些計算。

1. 在您希望結果出現的空白單元格中輸入以下任一公式:

=DATEDIF(A2,B2,"D")
=B2-A2

注意:這裡A2應該包含開始日期,而B2則是結束日期。

2. 拖動填充控制柄向下應用公式到其他行。單元格將顯示對應開始和結束日期之間的天數。

Formula entered to count the number of days between two given dates

提示和注意事項:

  • 如果結束日期早於開始日期:
    • 公式=B2 - A2將返回負數。
    • 公式=DATEDIF(A2, B2, "D")將返回#NUM! 錯誤。
      因此,請務必驗證您的輸入日期是否準確。
  • DATEDIF函數忽略時間部分,僅計算完整天數。
  • 對於包含起始和結束日期的天數(即包含兩端日期),在公式末尾添加+1:
    例如,=DATEDIF(A2, B2, "D") + 1 或 =B2 - A2 + 1。

使用公式計算兩個日期之間的週數

確定兩個日期之間的週數對於工資周期、重複事件或學術日程安排至關重要。Excel通過以下公式讓這個計算變得簡單明了。這種方法最適合基本的週數計算;對於基於日曆的週數計數,可能需要額外調整。

1. 在空白單元格中輸入以下任一公式:

=(DATEDIF(A2,B2,"D")/7)
=(B2-A2)/7

注意:在這些公式中,A2是開始日期,B2是結束日期。

2. 通過拖動填充控制柄將公式擴展到所需的行。結果將以小數形式顯示週數。此方法特別有助於找出確切的週數,但如果您只需要完整的週數(整數),請參閱下面的提示。

Formula entered to count how many weeks between two dates

  • 提示:要僅計算兩個日期之間的完整週數,請使用:
  • =ROUNDDOWN((DATEDIF(A2, B2, "d") /7),0)
    =INT((B2-A2)/7)

Formula entered to get the number of full weeks between two dates

附註:如果您需要將週與特定的星期幾對齊(例如,總是從星期一開始),您可以使用輔助列或WEEKNUM函數進行定制計算。


計算兩個日期之間的各種差異(天數、週數、月數、年數等)

如果您覺得很難記住哪個公式適用於哪個場景,Kutools for Excel日期與時間助手可以立即計算天數、週數、月數、年數的差異,甚至像週數+天數或月數+週數這樣的組合,無需記憶或調整公式。這個功能對於經常處理大量日期數據的用戶特別有幫助。

Kutools for Excel's Date & Time Helper interface

Kutools for Excel - 超過 300 種必備工具,讓 Excel 功能更強大。永久免費享受 AI 功能!立即獲取


使用公式計算兩個日期之間的月數

計算兩個日期之間的月數對於追蹤貸款期限、到期時間或項目階段很有用。DATEDIF函數旨在進行這種基於區間的日期計算。

1. 在您希望結果出現的單元格中輸入此公式:

=DATEDIF(A2,B2,"m")

注意:使用A2作為開始日期,B2作為結束日期。

2. 根據需要拖動填充控制柄向下應用公式。這個公式只會得出給定區間內的完整月份數。

Formula entered to get the number of months between two dates

  • 提示:要獲得月數和天數的組合結果,請使用以下公式:
  • =DATEDIF(A2,B2,"m")&" 個月 "&DATEDIF(A2,B2,"md")&" 天"

Formula entered to get the number of months and days between two dates

注意:DATEDIF函數將月份視為整體單位,因此除非像上面的組合公式那樣明確請求,否則不會計算部分月份。調整輸入格式以確保日期欄位被Excel識別為有效日期,否則可能會發生錯誤。


使用公式計算兩個日期之間的年數

對於年度報告、就職周年紀念或其他完整年份經過很重要的場景,Excel可讓您使用DATEDIF函數高效地進行計算。

1. 在空白單元格中輸入以下公式:

=DATEDIF(A2,B2,"y")

注意:引用A2作為開始日期,B2作為結束日期。

2. 使用填充控制柄將公式應用於所有需要的單元格。計算將返回兩個日期之間的完整年數。這對於快速確定服務年限或建立某些福利的資格標準非常有用。

Formula entered to calculate the number of years between two dates

故障排除:如果日期格式為文本而不是真正的Excel日期,公式可能會返回錯誤。如有必要,請使用DATEVALUE進行轉換。


使用公式計算兩個日期之間的年數、月數和天數

在需要更詳細的細分的情況下(如年齡計算或詳細任期報告),您可以結合DATEDIF函數來顯示兩個日期之間的年數、月數和天數。

1. 在單元格中插入或粘貼以下公式:

=DATEDIF(A2, B2, "y") &" 年 "&DATEDIF(A2, B2, "ym") &" 個月 " &DATEDIF(A2, B2, "md") &" 天"

注意:使用A2作為開始日期,B2作為結束日期。

2. 根據需要拖動公式。這種方法以組合的文字格式(例如,“2年3個月7天”)計算並顯示差異。

Formula entered to get the number of years months and days between two dates

提示:這個結果對於記錄員工年齡、合同期限或需要完全細分的客戶關係特別有幫助。如果您需要將結果放在不同的單元格中,請拆分公式或使用輔助列。


使用強大的功能計算兩個日期之間的天數、週數、月數、年數等各種差異

如果您不習慣使用公式,或者想要靈活地快速切換不同單位(天數、週數、月數、年數、組合),Kutools for Excel日期與時間助手簡化了這一過程。

注意:要使用 日期與時間助手,首先下載Kutools for Excel。安裝後,您可以從功能區快速訪問該功能。

安裝完Kutools for Excel後,按照以下說明操作:

1. 點擊一個單元格以獲取結果。前往Kutools > 公式助手 > 日期與時間助手,如下所示:

Date & Time helper option on the Kutools tab on the ribbon

2. 在日期與時間助手對話框中:

  • 類型下選擇差異選項;
  • 參數輸入框中選擇開始日期和結束日期;
  • 根據需要設置結果類型(年 + 月 + 週 + 日等)以進行自定義分解。

Date & Time Helper dialog box

3. 點擊“確定”進行計算。如果需要覆蓋更多數據行,請拖動填充控制柄擴展結果。

Results returned

點擊立即下載 Kutools for Excel 並免費試用!

如果您經常需要執行混合或不尋常的日期計算,或者想要靈活高效的無公式解決方案,特別推薦此解決方案。


VBA 宏:自動計算兩個日期之間的天數、週數、月數或年數

對於處理大規模數據或跨多行自動化重複計算的用戶,使用 VBA 宏可以提高效率。當您需要一次處理許多日期對,或者複製公式不切實際時,這種方法尤其適用。使用 VBA,您可以計算定義範圍內兩個日期之間的天數、週數、月數或年數差異,甚至可以根據需要自定義輸出格式。這對於定期報告或批量處理任務特別有效。

1. 導航到開發者 > Visual Basic 打開 VBA 編輯器。在 Microsoft Visual Basic for Applications 窗口中,點擊 插入 > 模塊。然後,將以下代碼複製並粘貼到模塊中:

Sub CalculateDateDifferences()
    Dim WorkRng As Range
    Dim RowRng As Range
    Dim StartCol As Integer
    Dim EndCol As Integer
    Dim OutputCol As Integer
    Dim DiffType As String
    Dim xTitleId As String
    
    xTitleId = "KutoolsforExcel"
    On Error Resume Next
    
    Set WorkRng = Application.InputBox("Select the range of date pairs (two columns: Start and End Date)", xTitleId, Selection.Address, Type:=8)
    
    If WorkRng Is Nothing Then Exit Sub
    
    StartCol = WorkRng.Columns(1).Column
    EndCol = WorkRng.Columns(2).Column
    OutputCol = EndCol + 1
    
    DiffType = Application.InputBox("Enter difference type: D=Days, W=Weeks, M=Months, Y=Years", xTitleId, "D", Type:=2)
    
    For Each RowRng In WorkRng.Rows
        If IsDate(RowRng.Cells(1, 1)) And IsDate(RowRng.Cells(1, 2)) Then
            Select Case UCase(DiffType)
                Case "D"
                    RowRng.Cells(1, 3).Value = RowRng.Cells(1, 2).Value - RowRng.Cells(1, 1).Value
                Case "W"
                    RowRng.Cells(1, 3).Value = (RowRng.Cells(1, 2).Value - RowRng.Cells(1, 1).Value) / 7
                Case "M"
                    RowRng.Cells(1, 3).Value = DateDiff("m", RowRng.Cells(1, 1).Value, RowRng.Cells(1, 2).Value)
                Case "Y"
                    RowRng.Cells(1, 3).Value = DateDiff("yyyy", RowRng.Cells(1, 1).Value, RowRng.Cells(1, 2).Value)
                Case Else
                    RowRng.Cells(1, 3).Value = "Invalid Type"
            End Select
        Else
            RowRng.Cells(1, 3).Value = "Invalid date(s)"
        End If
    Next
    
    Application.DisplayAlerts = True
    MsgBox "Date differences calculated in the third column of your selected range.", vbInformation, xTitleId
End Sub

2。點擊 Run button 按鈕運行宏。系統將提示您選擇包含開始和結束日期的範圍(兩列相鄰)。然後,輸入差異類型:D 表示天數,W 表示週數,M 表示月數,Y 表示年數。結果將出現在所選範圍右側的列中。

使用提示:此宏非常適合快速、一致的批量處理。確保您的日期列正確格式化為日期,以避免錯誤。如果結果列中出現“無效日期”,請檢查範圍內是否有非日期值或空單元格。此方法非常適合高級用戶或定期批量報告場景。


更多日期和時間相關文章:

  • 在 Excel 中計算午夜之後的時間段
  • 假設您有一個時間表記錄您的工作時間,A 列中的時間是今天的開始時間,B 列中的時間是第二天的結束時間。通常,如果直接減去“=B2-A2”來計算這兩個時間的差異,它將無法正確顯示結果,如左側截圖所示。如何在 Excel 中正確計算午夜之後兩個時間之間的小時數?
  • 計算兩個日期之間的天數 / 工作日 / 週末天數
  • 您是否曾經需要在 Excel 中計算兩個日期之間的天數?也許,有時候,您只想計算兩個日期之間的工作日,而有時候,您需要計算兩個日期之間的週末天數。如何在特定條件下計算兩個日期之間的天數?

最佳 Office 辦公效率工具

🤖 Kutools AI Aide:徹底革新數據分析,基於智能執行|生成程式碼|創建自訂公式|分析數據並生成圖表|調用 Kutools Functions
熱門功能查找、選取項目的背景色或標記重複值 | 刪除空行 | 合併列或單元格且不丟失資料 | 四捨五入...
高級 LOOKUP多條件查找|多值查找|多表查找|模糊查找...
高級下拉列表快速創建下拉列表 | 關聯下拉列表 | 多選下拉列表 ...
列管理器添加指定數量的列 | 移動列 | 切換隱藏列的可見狀態 | 區域與列比較 ...
精選功能網格聚焦 | 設計檢視 | 增強編輯欄 | 工作簿及工作表管理器 | 資源庫 (自動文本) | 日期提取器 | 合併資料 | 加密/解密儲存格 | 按清單發送電子郵件 | 超級篩選 | 特殊篩選(篩選粗體/傾斜/刪除線 ...)...
前15 大工具集12 款文本工具添加文本刪除特定字符,...)|50+ 種圖表 類型甘特圖,...)|40+ 實用 公式基於生日計算年齡,...)|19 款插入工具插入QR码按路徑插入圖片,...)|12 款轉換工具金額轉大寫匯率轉換,...)|7 款合併和分割工具高級合併行分割儲存格,...)| ...以及更多
使用 Kutools 支援你的語言——支援英語、西班牙語、德語、法語、中文及40 多種語言!

利用 Kutools for Excel 大幅提升你的 Excel 技能,感受前所未有的高效體驗。 Kutools for Excel 提供超過300 項高級功能,助你提升效率並保存時間。 點此查看你最需要的功能...


Office Tab 為 Office 帶來標籤式介面,讓你的工作更加輕鬆

  • 啟用 Word、Excel、PowerPoint 的標籤式編輯和閱讀功能
  • 在同一個視窗的標籤中打開和創建多個文件,而不是在新窗口中分開開啟。
  • 可提升你50% 的工作效率,每天為你大量減少滑鼠點擊次數!