Excel怎麼算年齡?DATEDIF公式、歲+月組合與錯誤排查

想在Excel中用出生日期欄位自動算出「X歲Y個月」?只要用 DATEDIF 函數搭配 TODAY(),就能精準算出足歲與剩餘月數,還能直接串接成文字顯示,完全不用手動計算。以下是針對行政、人資、教師等需要批量處理學生、員工或會員名冊的實用教程。

延伸閱讀:年齡計算

Excel用DATEDIF快速算出整歲與剩餘月數

在Excel中,最準確計算年齡的方式是使用 DATEDIF 函數。這個函數不只算整歲,還能算出不足一年的月數,特別適合製作報名表、員工資料表或生日提醒清單。

算整歲(足歲):
輸入公式 =DATEDIF(出生日期, TODAY(), "Y"),例如 =DATEDIF(A2, TODAY(), "Y"),就能得出「已滿幾歲」,以生日為分界點,不會提早一歲。

✅ 提示:若出生日期在A2欄,公式套用時直接改成 =DATEDIF(A2, TODAY(), "Y")。

算剩餘月數(不滿整年的部分):
加上 "YM" 參數,=DATEDIF(A2, TODAY(), "YM"),可算出當前年份中多出的月數。例如「已滿 3 歲 7 個月」。

文字串接範例(報表用):
想讓結果直接顯示成「已滿3歲7個月」?直接套用:
="已滿"&DATEDIF(A2,TODAY(),"Y")&"歲"&DATEDIF(A2,TODAY(),"YM")&"個月"

???? 小技巧:若要包含「剩餘天數」,可再加 "MD" 參數,但兒童或保險用途常只看「歲+月」。

想快速核對結果?可前往 年齡計算公式 預先輸入日期驗證。

YEARFRAC函數與DATEDIF的差異:生日分界的影響

兩種方法常被混用,但邏輯完全不同,選錯會導致年齡多算或少算。

DATEDIF 是以「生日當天」為分界點:
生日還沒到,就算「差一歲」,例如 2024 年 6 月 30 日出生者,在 2025 年 6 月 29 日仍算「3 歲」。

YEARFRAC 是按「比例計算」:
若搭配 ROUNDUP 會在生日當月前就加一歲,例如 2025 年 6 月 30 日越過 365 天就會被算成 4 歲,和 DATEDIF 的邏輯不同。

???? 選擇建議:
- 要精準「年齡」或「報表」用 DATEDIF;
- 要計算「年資比例」或「服務年限」才適合用 YEARFRAC。

想比較不同方法的算式差異?可到 實際年齡計算 用相同日期測試。

常見錯誤#VALUE!與#NUM!的成因與排查方法

如果你輸入公式後看到 #VALUE! 或 #NUM!,問題通常出在日期格式或資料邏輯上。

#VALUE!:
多數因「出生日期欄位被存為文字」導致。例如「1990/05/15」輸入時沒設定日期格式,Excel 無法辨識。
✅ 解法:
用 =VALUE(A2) 轉成數值,或選取欄位 →「資料」→「分割資料」→ 選擇「按分隔符號」→ 勾選「日期」格式,即可修正。

#NUM!:
通常因為「結束日期(TODAY())早於起始日期(出生日)」,例如出生日輸錯成 2030 年。
✅ 檢查項目:
1. 是否有人出生日期是未來日期?
2. 欄位是否錯置(例如把今天日期放進出生欄)?
3. 是否有空值或亂碼?

建議:批量計算前先用「條件格式」標示出 > 3000 年或 < 1900 年的日期,快速發現異常。

批量計算年齡後如何驗證結果正確性?

完成整批公式填入後,別急著送出,記得挑 1~2 筆已知案例手動核對。

比如:1995年3月18日出生,今天是2025年4月5日,
用 DATEDIF 算:

Y:29 歲(因 4月5日還未到3月18日生日)

YM:1 個月(從3月18日到4月5日)
→ 正確結果應為「已滿29歲1個月」。

使用 TODAY() 能自動跟進當日,不用每天手動更新,適合長期使用的名冊。

⚠️ 記得:不要直接用「民國年」如「84年」計算,要先轉成西元年(如 1984 年),否則會算錯。
想確認換算邏輯?可參考 計算年齡。

誰適合用這套Excel年齡計算法?有什麼限制?

使用情境 適合? 備註
行政/人資處理員工、學生名冊 ✅ 非常適合 一次算完百筆,節省手工時間
教師整理班級生日表或活動報名 ✅ 推薦 可搭配排序、篩選快速管理
初學者想學習Excel函數 ❌ 不建議 需先掌握日期格式與函數語法
需要算早產兒矯正年齡或保險年齡 ❌ 不適用 需額外設計邏輯與公式調整

這套方法不支援特殊年齡規則,如「以出生後第幾個月」計算或「按月份進位」,若有需要,建議手動調整或另建公式。

若你處理的是嬰幼兒資料,想看「出生後幾週」或「月齡標註」,可進一步參考 幼兒年齡計算 的工具與說明。

Posted in Default Category on October 27 at 03:35 AM

Comments (0)