Menu

Excel 根据出生日期计算年龄

=DATEDIF(B2,TODAY(),"Y") 返回出生日期在 B2 的人的周岁年龄。还能计算某个指定日期的年龄、几岁几个月几天,以及不用 DATEDIF 的算法。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=DATEDIF(B2,TODAY(),"Y") 返回出生日期在 B2 的人的周岁年龄。DATEDIF 计算两个日期之间的完整年数,TODAY() 提供第二个日期,所以每到生日年龄就加一。

根据出生日期计算年龄
C2
ABC
1NameBornAge
2Ana1990-05-1436
3Ben1985-11-3040
4Chloe2001-02-2825
5Dan1978-10-1047
6Eva2010-07-0416
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C 列的年龄按今天的日期计算,所以会随着时间推移而变化。修改 B 列中的出生日期,旁边的年龄也会跟着变。这个公式有三个参数:开始日期(出生日期)、结束日期(今天)和单位,"Y" 表示完整的年数。

指定日期的年龄

要得到某个固定日期的年龄,例如学年开始日或合同签订日,把那一天放进一个单元格,用这个单元格代替 TODAY()。$F$2 中的 $ 让公式向下填充时引用始终指向 F2。

某个日期的年龄
C2
ABCDEF
1NameBornAgeAs of
2Ana1990-05-14362026-10-01
3Ben1985-11-3040
4Chloe2001-02-2825
5Dan1978-10-1047
6Eva2010-07-0416
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

在 2026-10-01,Ana 36 岁,Dan 47 岁:他 10 月 10 日的生日还没到。把 F2 改成 2026-10-10,Dan 就满 48 岁了。这种写法每次打开文件结果都一样,当年龄要写进报告时这一点很重要。其他单位请参阅 DATEDIF 页面。

精确到年、月、日的年龄

DATEDIF 还有计算完整年数之外剩余部分的单位:"YM" 计算最后一个完整年之后的月数,"MD" 计算最后一个完整月之后的天数。用 & 把三者连起来,就能把年龄写成文本。

年、月和日
E2
ABCDEF
1BornYearsMonthsDaysAgeAs of
21990-05-143641736 years, 4 months, 17 days2026-10-01
31978-10-1047112147 years, 11 months, 21 days
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

从 1990-05-14 到 2026-10-01 是 36 年 4 个月 17 天。Microsoft 不建议使用 "MD" 单位,因为在某些情况下(例如出生日期在 31 日)它可能返回负数或错误的天数。出生日期在 29 日至 31 日时,请核对天数。

不用 DATEDIF 计算年龄

DATEDIF 在所有 Excel 版本中都能用,但它不在函数列表里,输入公式时也不会自动补全,所以有些人更喜欢 YEARFRAC。YEARFRAC(start,end,1) 以小数形式返回两个日期之间的年数,并按每年的实际长度计算(基准 1)。INT 去掉小数部分。

DATEDIF 与 YEARFRAC 并排对比
D2
ABCD
1BornAs ofDATEDIFYEARFRAC
21990-05-142026-10-013636
31978-10-102026-10-014747
42010-07-042026-10-011616
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

两列结果一致:36、47 和 16。如果不加 INT,最后一行的 YEARFRAC 约为 16.24,当你需要小数形式的年龄时(例如在统计表中)这很有用。

为什么不要除以 365

一种常见的捷径是 =INT((F2-B2)/365):用活过的天数除以一年的天数。闰年每四年多一天,所以过了几十年后,这个公式会在生日之前几天就跳到下一个年龄:48 岁生日会提前 12 天。

生日前后除以 365 会算错
D2
ABCDE
1BornAs ofDays livedDivide by 365DATEDIF
21990-05-142026-10-01132893636
31978-10-102026-10-01175234847
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

对于 1978-10-10 出生的人,除以 365 在 2026-10-01 得到 48 岁,比 48 岁生日早了九天。DATEDIF 给出的是 47。除以 365.25 能修正大多数行,但在某些日期仍然会出错,所以请使用 DATEDIF 或 YEARFRAC。

练习:开学第一天的年龄

轮到你了
C2
ABCDE
1NameBornAgeAs of
2Ana2012-04-172026-09-01
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中,计算 Ana 在 E2 日期时的周岁年龄。

隐藏的检查会修改 E2 中的日期,所以公式必须读取它。

为什么年龄显示成了日期

如果你把年龄公式输入到已经包含日期的单元格中,或输入到设置为日期格式的列中,Excel 会保留日期格式,把 36 显示为 1900-02-05(Excel 日期系统中的第 36 天;在美国区域设置下显示为 2/5/1900)。底下的数字其实是对的。选中这些单元格,选择“开始 > 数字格式 > 常规”(或按 Ctrl+Shift+~,Mac 上按 Control+Shift+~),年龄就会显示出来。

常见问题

Excel 中计算年龄的公式是什么?

=DATEDIF(B2,TODAY(),"Y"),出生日期在 B2 中。它计算从出生日期到今天的完整年数,所以年龄在生日当天才加一,不会提前。

在 Excel 中如何计算某个指定日期的年龄?

把日期放进一个单元格,用它代替 TODAY():=DATEDIF(B2,$F$2,"Y") 给出在 F2 那天的年龄。$ 符号让你向下填充公式时 F2 保持不变。

在 Excel 中不用 DATEDIF 如何计算年龄?

用 =INT(YEARFRAC(B2,TODAY(),1))。YEARFRAC 以小数形式返回两个日期之间的年数,INT 只保留整数年。

为什么我的年龄公式显示成 1900-01-30 这样的日期?

这个单元格被设置成了日期格式,所以年龄 30 显示成了 Excel 日历中的第 30 天。选中单元格,把“开始 > 数字格式”设为“常规”。

为什么用 365 去除来算年龄是错的?

闰年每四年多一天,所以 =INT((TODAY()-B2)/365) 会提前几天算到生日:1978-10-10 出生的人,按这个公式在 2026-10-01 就是 48 岁,比真正满 48 岁早了九天。DATEDIF 按日历年计算,没有这个误差。

Coddy 编程语言插图

和 Coddy 一起学编程

开始