若要在 Excel 中根據出生日期計算年齡,請將出生日期從今天日期中減去,然後除以 365.25,或者使用專用函式 =DATEDIF(birthdate, TODAY(), "Y"),即可在單一儲存格中直接回傳完整的年數。DATEDIF 是最可靠的方法,因為 Excel 會將每個日期儲存為從 1900 年 1 月 1 日開始以整數天數計算的序號,這表示日期相減一定會產生精確的整數天數。若要更詳細地拆解成年、月、日,可以將三次 DATEDIF 呼叫與單位代碼 "Y"、"YM" 和 "MD" 結合使用。一個典型的儲存格公式如下 =DATEDIF(A2, TODAY(), "Y") & " years, " & DATEDIF(A2, TODAY(), "YM") & " months, " & DATEDIF(A2, TODAY(), "MD") & " days",它會回傳儲存格 A2 中日期的年齡字串。如果你只需要整數年(這對年齡驗證欄位、週年紀念和大多數 HR 試算表來說已經足夠),那麼單一參數的版本就綽綽有餘了。
大多數人帶著一份真實的試算表來查詢這個問題:客戶名單、學生名冊、一批新進員工,或是從 CRM 匯入的聯絡人資料庫。模式都一樣——每一列都帶有一個出生日期,而你需要在旁邊加上一個乾淨的「Age」(年齡) 欄。Excel 沒有一個單獨命名的 Age 函式,所以每個相關教學最終都會回到 DATEDIF、YEARFRAC,或是減法加除法的技巧。減法技巧雖然快速,但對於一歲以下的年齡準確度較低,而 YEARFRAC 會回傳小數年數,需要自己四捨五入。DATEDIF 介於兩者之間:它會以你要求的單位回傳整數答案,無需四捨五入。

回傳整數年齡的 Excel 公式
開啟一份空白活頁簿,並在儲存格 A2 中輸入一個出生日期(例如,1990-06-15)。在儲存格 B2 中輸入以下公式:
- 輸入 =DATEDIF(A2, TODAY(), "Y") 然後按 Enter。
- Excel 會回傳一個整數,代表 A2 中的出生日期與今天日期之間已完成的年數。
- 將 B2 儲存格右下角的填滿控點往下拖曳,把公式套用到表格中的每一列。
- 如果 Excel 將新欄位顯示為小數,請將該欄位格式化為零位小數的數字格式。
DATEDIF 中的第三個參數稱為單位代碼 (unit code),它會控制答案的精細程度:
| 單位代碼 | DATEDIF 回傳的內容 | 典型用途 |
|---|---|---|
| "Y" | 已完成的年數 | 標準的整數年齡 |
| "M" | 已完成的月數 | 活著的總月數 |
| "D" | 已完成的天數 | 精確的天數計算 |
| "YM" | 扣除最後一個完整年後剩餘的月數 | 搭配 "Y" 計算「年月」年齡 |
| "MD" | 扣除最後一個完整月後剩餘的天數 | 搭配 "Y" 和 "YM" 計算「年月天」年齡 |
| "YD" | 扣除最後一個完整年後剩餘的天數 | 搭配 "Y" 計算「年天」年齡 |
"YM" 和 "MD" 代碼特別好用,因為它們可以讓你跳過已完成的年或月,不必再回頭跨越整個年度。這正是用來撰寫護照或身分證上那種「年月天」年齡的方法。
在一個儲存格中建立「年、月、日」年
有時候單一整數不夠用——申請表、證書和 HR 表單通常會想要「32 年 4 個月 17 天」,而不只是「32」。若要取得這種格式,請將三次獨立的 DATEDIF 呼叫串連成一個字串。再次將出生日期放在儲存格 A2,並在儲存格 B2 輸入以下公式:
=DATEDIF(A2, TODAY(), "Y") & " y, " & DATEDIF(A2, TODAY(), "YM") & " m, " & DATEDIF(A2, TODAY(), "MD") & " d"
逐一說明每段的作用:第一個 DATEDIF 使用 "Y" 回傳整數年數;第二個使用 "YM" 計算自上一次生日之後剩下的月數;第三個使用 "MD" 計算自上一次月生日之後剩下的天數。& 符號 & 是 Excel 的字串串接運算子,它會將數字與你用引號包住的文字標籤黏在一起。若你想讓公式列中的日期顯示更友善,也可以將每個 DATEDIF 呼叫包進 TEXT 函式中來控制前置零:TEXT(DATEDIF(A2, TODAY(), "Y"), "0") 只要數值大於九,就會強制以兩位數輸出年數。
其他值得了解的 Excel 方法
除了 DATEDIF 之外,還有另外兩種做法在舊式試算表和 DATEDIF 普及前所寫的教學中很常見。第一種是 YEARFRAC 技巧:=INT(YEARFRAC(A2, TODAY(), 1))。YEARFRAC 的第三個參數是日數計算基準——1 代表「實際/實際」(actual/actual),這模擬了真實世界中年齡增長對閏年的處理方式。INT() 函式會將小數年數取整為乾淨的整數。對於一歲以上的年齡,這會產生與 DATEDIF 相同的結果,但若該年度尚未過生日,則可能會回傳略有不同的答案。
第二種方法是減法加除法,這對初學者來說最直觀:=INT((TODAY() - A2) / 365.25)。分子代表活著的總天數,因為 TODAY() 和手動輸入的日期都是序號,而除以 365.25 則會將天數轉換成粗略的年數。INT() 函式會無條件捨去小數,這正符合「已完成年數」的定義。365.25 這個除數是閏年的粗略平均值,因此對於較大的年齡,答案可能會差個幾天——對於 HR 或年齡驗證工作來說這通常不是問題,但值得知道這個誤差的確存在。如果你想要相同的精確度卻不想手動輸入公式,Lizely 上的年齡計算機能在單一畫面中將結果拆解為年、月、日、總月數、總週數、總天數,以及距離下次生日的倒數計時。
常見錯誤與排除方法
Excel 中最常見的年齡公式錯誤是 DATEDIF 產生 #NUM! 結果。當開始日期晚於結束日期時,DATEDIF 就會回傳這個錯誤,幾乎都是由以下兩個原因之一造成:出生日期儲存格是空的(Excel 將空白視為數字 0,也就是 1900 年 1 月 0 日——這是比 TODAY 早的日期,所以結果會非常大且在數學上有效,直到資料用盡),或者出生日期被輸入為文字字串而非真正的 Excel 日期。若要診斷問題,請點選出生日期的儲存格,查看公式列,並檢查該值是靠右對齊(真正的日期)還是靠左對齊(文字字串)。若是文字,=DATEVALUE(A2) 函式會將其轉換回序號。
第二個常見錯誤是 "start_date is later than end_date" 訊息,它會在公式設定為以早於出生日期的未來「截止」日期來計算年齡時出現。這通常發生在你把一個原本要用今天日期的公式,複製到一個你想用例如 2020 年 1 月 1 日來計算年齡的儲存格時。請將 TODAY() 替換為寫死的「截止」日期,或參照另一個儲存格中保存的日期。
第三個陷阱是 #VALUE! 錯誤,當 DATEDIF 中有參照儲存格存放的是文字而非日期時就會出現。如果你無法將來源儲存格格式化為日期,請將參數包進 DATEVALUE(),或使用「資料剖析」功能將來源欄強制轉為日期格式。一旦該欄位被正確辨識為日期,DATEDIF 就能 一步到位 回傳數字。
什麼時候使用線上工具更合適
當你有數百或數千列需要一次更新時,試算表非常好用,但大多數搜尋「how to calculate age from birthdate in Excel」的人其實心裡只有一個日期:自己的生日、孩子的年齡、父母的年齡、依年齡計算的截止日,或是法律資格的年齡分界。在這些一次性情況下,線上年齡計算機比切換到 Excel、輸入公式並等待運算更快。Lizely 的工具還能處理 DATEDIF 需要三次呼叫才能算出的精細部分——年、月、日、總月數、總週數、總天數,以及距離下次生日的即時倒數——你完全不必記住任何單位代碼。
線上計算機表現更出色的第二種情境,是當你想要計算某個過去或未來日期的「當時年齡」時。在 Excel 中把 TODAY() 換成寫死的日期雖然可行,但每次更改參考日期時,你都必須編輯並重新輸入公式。網頁工具通常會在出生日期欄位旁邊提供第二個日期欄位,因此切換「截止」日期就會產生新答案,無需編輯公式。這在法律情境中特別方便,例如「在簽約當天此人幾歲」,你可以在 Excel 與線上年齡指南 中進一步了解。
總結
請根據資料集大小與所需的精確度來選擇方法。對於快速的單列答案,=DATEDIF(A2, TODAY(), "Y") 是最簡潔的 Excel 公式,並回傳已完成的年數。若要「年月天」格式的字串,請用 & 與標籤文字串接三次 DATEDIF 呼叫,分別使用 "Y"、"YM" 和 "MD" 單位代碼。對於不支援 DATEDIF 的舊版試算表,可改用 =INT(YEARFRAC(A2, TODAY(), 1)) 或 =INT((TODAY() - A2) / 365.25) 作為粗略的整數年數方案。至於個人化的一次性答案,若你寧願完全跳過公式,請前往 Lizely 年齡計算機,輸入出生日期,即可即時查看完整的年齡分項結果。