在 Excel 中,根據出生日期計算年齡是使用 DATEDIF 函數:=DATEDIF(birthdate, TODAY(), "Y") 會回傳兩個日期之間的完整年數,而堆疊三次 DATEDIF 呼叫——一次用 "Y"、一次用 "YM"、一次用 "MD"——就能得到與官方 年齡計算機 在同一畫面上顯示的「年-月-日」詳細分解結果。要使用 DATEDIF,請將每個出生日期儲存為真正的 Excel 日期(而非文字)放在 A 欄,然後輸入 =DATEDIF(A2, TODAY(), "Y") 來取得已完成年數;若要得到可讀性較佳的字串,則輸入堆疊版本 =DATEDIF(A2, TODAY(), "Y") & " years, " & DATEDIF(A2, TODAY(), "YM") & " months, " & DATEDIF(A2, TODAY(), "MD") & " days"。如果完全不需要試算表,只要在年齡計算機中輸入出生日期就能立即讀出結果,並已自動換算成月數、週數與天數總和,適用於任何過去或未來的參考日期。

「以年、月、日表示的年齡」真正代表的意義
以年、月、日表示的年齡,是兩個日期——出生日期與參考日期——之間的差距,逐個日曆單位計算。從出生日期往後推進,加上完整的年,直到再加一年會超過參考日期為止,接著加上完整的月,再計算剩餘的天數。這個順序很重要。先計算整年,可以避免直接相減日數所產生的負數天數問題,特別是在跨越不同長度的月份時。
舉例來說,從 1 月 31 日到 3 月 1 日的差距為 1 個月又 1 天:1 月 31 日加一個月,在非閏年會落在 2 月 28 日,再加一天就到 3 月 1 日。若直接相減日數會得到「1 個月減 30 天」,這並不是有意義的年齡。因此,「向前推進」是唯一可靠的演算法,而這也是值得信賴的日期函式庫(例如 date-fns)所採用的相同做法。
如何在 Excel 中根據出生日期計算年齡
Excel 內建了幾種從出生日期取得年齡的方法,每一種回答的問題略有不同。下表比較了這些方法,讓你在開始輸入前先挑選合適的做法。
| 方法 | 回傳結果 | 最適用於 | 主要缺點 |
|---|---|---|---|
| =DATEDIF(A2, TODAY(), "Y") | 僅顯示完成年數 | 大多數年齡檢查、身分證件、表單 | 會遺失月份與天數 |
| 堆疊 DATEDIF "Y"、"YM"、"MD" | 以文字顯示年、月、日 | 嬰幼兒、週年紀念、重要里程碑 | 公式冗長,容易打錯 |
| =YEARFRAC(A2, TODAY(), 1) | 實際/實際的小數年數 | 財務、稅務、保險按比例計算 | 不符合一般日曆習慣 |
| =INT((TODAY() - A2) / 365.25) | 大約年數 | 跨長時間的粗略估算 | 一年內會產生誤差 |
| 年齡計算機 | 年 + 月 + 日、總和、下一個生日 | 任何單次年齡查詢 | 需要瀏覽器 |
請依照下列步驟,在自己的工作表中輸入年齡公式。
- 將每個出生日期以真正的 Excel 日期格式放在 A 欄。只要 Excel 能將其解析為序號,「15-Mar-1990」或「1990/03/15」這類格式都能使用。
- 確認儲存格的格式為「日期」而非「文字」。按右鍵選擇「儲存格格式」,然後挑選「日期」。以文字輸入的日期會在以下每個公式中產生 #VALUE! 錯誤。
- 在要顯示完成年數的儲存格中,輸入 =DATEDIF(A2, TODAY(), "Y"),其中 A2 為出生日期。按 Enter,然後向下拖曳填滿控點將公式複製到每一列。
- 若要產生更詳細的「年-月-日」字串,請將公式替換為 =DATEDIF(A2, TODAY(), "Y") & " years, " & DATEDIF(A2, TODAY(), "YM") & " months, " & DATEDIF(A2, TODAY(), "MD") & " days" 並按 Enter。
- 若要固定計算日期而非使用 TODAY(),請將每個 TODAY() 替換為儲存格參照(例如 B2)——只要在一個地方更新這個「截至」日期,就能重新整理所有列。
- 若要更改單位,請替換 DATEDIF 的第三個參數:「M」會回傳兩個日期之間的總月數,「D」會回傳總天數,「YM」會回傳自上次週年之後的月數,「MD」會回傳自上次完整月份之後的天數。
公式在其中一列運作正常後,就向下填滿。每當活頁簿開啟時,Excel 都會重新計算 DATEDIF,因此每個年齡都會保持在最新狀態,你不需額外做任何處理。
為何 Excel 的年齡公式在棘手的生日上會出錯
試算表裡大部分「年齡錯誤」的問題,通常來自三個地方:月份天數較短、閏年生日,以及跨越日曆邊界直接相減。
月底日期。直接相減日數,當出生日為 31 而參考月份較短時,就會產生負的天數。DATEDIF 之所以能避免這個問題,是因為它會「借位」——當 MD 計算結果為負時,函數會將月份數減 1,並把該月份實際天數(無論是 28、29、30 或 31 天)加回去。
2 月 29 日生日。閏年遵循格里高利曆規則:能被 4 整除的年份為閏年,但世紀年除外,世紀年還必須能被 400 整除——因此 2000 年是閏年,而 1900 和 2100 年不是。2 月只有在閏年時才有 29 天,所以 2 月 29 日出生的人,真正的生日每四年才會出現一次。包括年齡計算機在內的多數年齡函式庫,在平年時會將生日視為 2 月 28 日——這是歐洲多數國家及許多法律體系採用的慣例——因此該人每年仍會增加一整歲。
使用 YYYY 減 YYYY 捷徑時的差一錯誤。=YEAR(TODAY()) - YEAR(A2) 會在當年生日尚未到來之前回傳錯誤的結果。使用 DATEDIF,你完全不用去思考目前日期落在週年紀念日的哪一側。
INT((TODAY() - DOB) / 365.25) 僅為近似值。365.25 天的年份在長時間範圍下還算堪用,但在單一年內會有一兩天的誤差。請將其視為粗略數字,而非精確的法律年齡。
一鍵取得你的精確年齡
若你寧願完全跳過公式,年齡計算機會回傳相同的「年-月-日」詳細分解,並加上以週、月、日為單位的總和,以及距離下一個生日的即時倒數。整個過程都在你的瀏覽器中執行,日期不會離開你的裝置,一旦變更欄位,結果就會立即更新。
使用方式:
- 開啟年齡計算機,在第一個欄位中選擇你的出生日期。你的精確年齡會立刻出現——不需要按下任何按鈕。
- 讓第二個日期保持為今天,或將其設定為任何過去或未來的參考日期,以查詢你在——或將會在——那個特定日期時的年齡。
- 除了讀取以年、月、日表示的年齡與月、週、日總和外,還能查看距離下一個生日的倒數。
你也可以將其指向某個里程碑日期,看看自己在退休、結婚紀念日或新學年開始時的年齡——完全不需要輸入任何公式。
示範範例:實際操作向前推進演算法
若想實際看到「向前推進」演算法的運作,請以出生日期 1990 年 3 月 15 日搭配參考日期 2026 年 6 月 6 日為例。
步驟 1 —— 完整年數。從 1990 年 3 月 15 日開始,往前計算完整的年數。每一年都會落在下一個日曆年的 3 月 15 日。跨越 36 次會落在 2026 年 3 月 15 日,早於 2026 年 6 月 6 日,因此這 36 年都算入。若再推進第 37 年,會落在 2027 年 3 月 15 日,已超過參考日期,因此不計入。完整年數 = 36。
步驟 2 —— 完整月數。從 2026 年 3 月 15 日開始,往前計算月數。一個月落在 4 月 15 日,兩個月落在 5 月 15 日。第三個月會落在 6 月 15 日,已超過 6 月 6 日,因此完整月數 = 2。
步驟 3 —— 剩餘天數。從 2026 年 5 月 15 日到 2026 年 6 月 6 日:先走完 5 月份的 16 天(31 − 15 = 16),再加上進入 6 月的 6 天。剩餘天數 = 22。
在 2026 年 6 月 6 日的精確年齡為 36 年 2 個月又 22 天。年齡計算機在你的瀏覽器中執行的,正是相同的「向前推進」演算法。若想以總月數、總週數或跨過所有閏年的總天數來表示,請使用這個工具——跨越多個 2 月來計算日曆天數,正是那種用手算極容易出錯的運算。
若你正在權衡各種選擇,如何在 Excel 中計算年齡:DATEDIF、YEARFRAC、INT 對此有詳細說明。
若你正在權衡各種選擇,在 Excel 中根據出生日期計算年齡:用計算機跳過公式 對此有詳細說明。