Excel 會使用 DATEDIF 函式,搭配單位代碼 "Y",來計算兩個日期之間相差的年數:=DATEDIF(A1, B1, "Y") 會傳回儲存格 A1 與 B1 中兩個日期之間已完成的完整年數。DATEDIF 函式是內建的標準方式,可以用一般人實際表達的方式(X 年 X 個月 X 天)來呈現日期差距:1 年 2 個月又 5 天。你可以搭配 "YM" 來取得扣除整年後剩下的月數,再搭配 "MD" 來取得剩下的天數,因此只要一組 DATEDIF 呼叫,就能涵蓋大多數專案、合約與人力資源記錄實際需要的完整「年-月-日」拆解。DATEDIF 自 1990 年代起就隨 Excel 出貨,而且在所有現代版本中都能使用,包括 Excel for Microsoft 365、Excel 2024、Excel 2021、Excel 2019 與 Excel 2016,儘管 Microsoft 從未將它加入官方函式參考中。以下提供完整的 DATEDIF 單位參照、年/月/日的精確公式、替代的 YEARFRAC 方法,以及一個無需開啟試算表就能得到相同答案的免費線上工具。

how to calculate date difference in years in excel
如何在 Excel 中計算日期相差的年數

使用 DATEDIF 函式取得兩個日期之間的年數

DATEDIF 是 "date difference"(日期差距)的縮寫,依序接受三個參數:開始日期、結束日期,以及一個以引號包住的單位代碼。單位代碼會告訴 DATEDIF 要傳回整年、整月還是整天的差距,另外還有三個「剩餘」代碼,用來處理未滿一年或一月的零頭部分。最常見的呼叫方式是 =DATEDIF(A1, B1, "Y"),會傳回兩個儲存格之間已完成的完整年數。

這個函式不會四捨五入。它只會傳回已完成的完整年數,就像你會說「她 34 歲」而非「她 34.7 歲」一樣。如果你想要帶小數的年份(例如 34.7),則需要使用 YEARFRAC,這個方法稍後會在本篇文章中介紹。對人力資源記錄、合約長度、租期和訂閱期間而言,DATEDIF 所產生的整數版本,正是大多數讀者實際預期的結果。

如同所有 Excel 日期函式,DATEDIF 需要你在參照的儲存格中放入真正的日期值,而不是文字字串。如果某個欄位是以文字形式儲存日期,請先用 DATEVALUE 包裹,或在撰寫公式前將儲存格轉換為日期格式。結束日期必須晚於或等於開始日期,否則 DATEDIF 會傳回 #NUM!。如果你希望公式能優雅地處理任一順序,則下文介紹的日期差距計算器方法無論日期如何輸入,都能保持答案為正值。

如何在 Excel 中計算年、月、日

在 Excel 中取得整潔的「年-月-日」拆解,最快的方式是在三個相鄰的儲存格中堆疊三次 DATEDIF 呼叫。每次呼叫使用不同的單位代碼,因此公式之間可以乾淨地分工而不重疊,而這三個數字永遠會剛好加回原本的差距。

  1. 在儲存格 A1 中輸入較早的日期,格式設定為日期(例如 2000-01-01)。
  2. 在儲存格 B1 中輸入較晚的日期,同樣格式設定為日期(例如 2025-01-01)。
  3. 在儲存格 C1 中輸入 =DATEDIF(A1, B1, "Y"),然後按下 Enter。這會傳回已完成的完整年數。
  4. 在儲存格 C2 中輸入 =DATEDIF(A1, B1, "YM"),然後按下 Enter。這會傳回扣除整年後剩下的月數。
  5. 在儲存格 C3 中輸入 =DATEDIF(A1, B1, "MD"),然後按下 Enter。這會傳回扣除整月後剩下的天數。
  6. 將三個儲存格的結果一起閱讀。得到的會是一個讀起來很自然的「年-月-日」拆解,例如「25 年 0 個月 0 天」。

以上方輸入為例的實際計算:公式 =DATEDIF("2000-01-01", "2025-01-01", "Y") 會傳回 25,因為這兩個日期之間剛好相隔 25 個完整年。對同一組輸入,後續的公式 =DATEDIF(A1, B1, "YM") 與 =DATEDIF(A1, B1, "MD") 都會傳回 0,因為這兩個日期在相隔 25 年後落在同一天與同一月。這三個數字永遠會剛好加回原本的差距:開始日期加上 25 年、0 個月、0 天,精準地落在結束日期。

其他計算年份差距的方法:YEARFRAC 與簡單減法

Excel 還提供另外兩種常見方式來表達兩個日期之間以年為單位的差距,各有不同的最佳用途。在撰寫公式之前,請參考下表選擇適合的方法。

YEARFRAC 會傳回帶小數的年數,而非整數。其語法為 =YEARFRAC(start_date, end_date),還有一個選用 basis 引數,用來控制日數計算慣例;大多數使用者預期的是 basis 1(actual/actual),因為它符合實際的曆法。一個 25 年又 9 個月的差距,在 basis 1 下會得到大約 25.75。YEARFRAC 適用於按比例計算、折舊時程、利息累積,以及任何需要年數分數比例的情境。

簡單減法會得到總天數,接著你可以除以 365.25 來取得粗略的年數:=(B1-A1)/365.25。這個方法雖然快速,但在閏日附近以及月份邊界時並不準確,因為 365.25 只是年長度的平均值。它足以用於粗略估計,但若需要對齊到實際曆法則不夠可靠。

方法最適合情境輸出類型
使用 "Y" 的 DATEDIF整數年數、人力資源記錄、合約、年齡僅完整年數
使用 "Y" + "YM" + "MD" 的 DATEDIF符合一般人說法的「年-月-日」拆解三個整數,加總後等於原本的差距
YEARFRAC(basis 1)按比例計算、折舊、帶小數的年齡帶小數的年數
(B1-A1)/365.25僅供粗略估計帶小數的年數,在閏日附近會有誤差

如果你的工作主要是呈現一個整潔的整數年數,請堅持使用 DATEDIF。如果你需要小數或按比例的時間,則請改用 YEARFRAC。

六個 DATEDIF 單位代碼一覽表

DATEDIF 接受六個單位代碼,每一個都會回答略為不同的問題。大多數使用者只需要前三個,但「剩餘」代碼正是讓你不必手動進行日期運算,就能建立「年-月-日」拆解的關鍵。

單位代碼傳回內容典型用途
"Y"已完成的完整年數年資、以年計的年齡、合約長度
"M"已完成的完整月數訂閱的總月數
"D"兩日期之間的天數供後續運算使用的原始天數
"MD"最後一個完整月之後剩下的天數「年-月-日」拆解中的末尾天數
"YM"最後一個完整年之後剩下的月數「年-月-日」拆解中的中間欄位
"YD"最後一個完整年之後剩下的天數忽略剩餘年數的「年至日」天數

有一個值得特別提醒的陷阱:「MD」與「YM」這兩個剩餘代碼在月份邊界時,可能會傳回出乎意料的結果,因為 Excel 在計算剩餘天數之前會先跳過整月。例如從 3 月 31 日到 4 月 30 日的區間,可能會傳回 30 天的剩餘天數,而不是曆法上正確的 30 天。就 DATEDIF 定義欄位的方式而言,這個結果在內部是一致的,但如果你在月底邊界需要嚴格的曆法正確性,那麼日期差距計算器會為你處理這個邊界限制問題。

不使用試算表取得相同的「年-月-日」答案

當你需要快速得到「年-月-日」的差距,而覺得開試算表太麻煩時,日期差距計算器只要三個步驟就能產生相同的拆解:選擇開始日期、選擇結束日期,然後在輸入欄下方即時讀取天數、週數、月數以及「年-月-日」的拆解結果。不需要撰寫任何公式,也不需要設定任何欄位;你還可以勾選「僅工作日」選項,將區間拆成工作日與週末日,這兩者加起來永遠等於總天數。

這個工具處理閏年與月底邊界限制的方式,與 DATEDIF 在完整單位上的處理方式相同,但它額外加入了對剩餘天數的曆法正確處理,這在 Excel 中偶爾會在月份邊界出問題。選擇同一個日期兩次會傳回零,而先輸入較晚的日期則仍然會產生乾淨的正數答案,而非負數。一切都在你的瀏覽器中執行,因此日期永遠不會離開你的裝置,也不會被上傳或儲存。

若想在 Excel 中處理相關工作,如何在 Excel 中計算年齡:DATEDIF、YEARFRAC、INT 指南會逐步說明同樣的公式如何專門套用於以年為單位的年齡計算,並提供額外的實作範例,以及與 INT(yearfrac) 捷徑的比較。

延伸閱讀:星期幾計算圖表:查詢任何日期。