返回博客
2 min read

如何在 Excel 中计算年龄(DATEDIF 和 YEARFRAC)+ 免费模板

使用 DATEDIF、YEARFRAC 和 TODAY() 的分步 Excel 公式从出生日期计算年龄。包括实用示例、故障排除提示和免费的在线年龄计算器。

如何在 Excel 中计算年龄(DATEDIF 和 YEARFRAC)+ 免费模板

在 Excel 中计算年龄是最常见的电子表格任务之一 - 无论您是管理员工记录、跟踪客户生日还是构建学校数据库。本综合指南涵盖了您需要的所有方法,从简单的年份计算到以年、月、日为单位的精确年龄细分。

目录

  1. 开始之前:日期格式基础知识

  2. 方法 1:DATEDIF – 以完整年数表示的年龄

  3. 方法 2:以年数、月数和年龄表示的年龄天数

  4. 方法 3:计算截至特定日期的年龄

  5. 方法 4:YEARFRAC – 年龄小数

  6. 方法 5:计算多行的年龄

  7. 奖励:距离下一个日期的天数生日

  8. 方法比较表

  9. 常见问题和解决方案

  10. Excel 与 Google 表格

  11. 在线替代方案

  12. 常见问题解答

开始之前:日期格式基础知识

开始之前公式,确保您的日期格式正确。 Excel 会区分实际日期和看起来像日期的文本,这种区别很重要。

如何检查单元格是否包含真实日期:

  1. 单击包含日期

  2. 查看编辑栏 - 如果它显示数字(例如 45678),则它是真实日期

  3. 如果它显示文本(例如"01/15/1990"),Excel 将其视为字符串

将文本转换为日期:

如果您的日期存储为文本,请将其转换首先:

=DATEVALUE(A2)

然后将结果单元格格式设置为日期(右键单击→设置单元格格式→日期)。

重要提示:不同的区域设置对日期格式的解释不同。 “01/02/2000”可能表示 1 月 2 日(美国)或 2 月 1 日(欧洲)。请务必验证您的日期解析是否正确。

方法 1:DATEDIF – 以完整年份计算的年龄

DATEDIF 函数是在 Excel 中计算年龄的最直接方法。它返回两个日期之间的完整年数。

公式:

=DATEDIF(A2, TODAY(), "Y")

其中:

  • A2 = 包含日期的单元格出生

  • TODAY() = 当前日期(更新自动)

  • “Y” = 返回完成年

示例:

[[[TA G_130]]]

A

B

日期的出生

年龄

[[[TAG_ 156]]]

1990-03-15

=DATEDIF(A2,今天(), “Y”)

[[[TAG_16 8]]]1985-07-22

=DATEDIF(A3,今天(), “Y”)

[[[TAG_17 8]]]2000年12月1日

=DATEDIF(A4, TODAY(), "Y")

结果(截至一月份2026):

[[[TA G_195]]][ [[TAG_227]]][[[TAG_2 37]]]

日期的出生

年龄

[ [[TAG_206]]]

1990-03-15

35

[[[TAG_ 216]]]

1985-07-22[[[TAG_ 221]]]

40

2000年12月1日

[ [[TAG_232]]]

25

注意: DATEDIF 是 Excel 中的一个“隐藏”函数,它不会出现在自动完成中,但它工作得很好。只需手动输入即可。

方法 2:以年、月和日为单位的年龄

对于需要精确年龄的情况(医疗记录、法律文件、人力资源系统),您需要完整的年龄细分。

单个公式:

年份:=DATEDIF(A2, TODAY(), "Y")
月份:=DATEDIF(A2, TODAY(), "YM")
Days: =DATEDIF(A2, TODAY(), "MD")

第二个参数代码:

  • “Y” = 已完成总数年

  • “YM” = 完成后的剩余月份年

  • “MD” = 完成后的剩余天数月

多合一公式(单个单元格):

=DATEDIF(A2,TODAY(),"Y") & " 年," & DATEDIF(A2,TODAY(),"YM") & " 月," & DATEDIF(A2,TODAY(),"MD") & "天”

输出示例:“35 年,10 个月,12 天”

专业格式标签:

为了更清晰的输出,您可以添加条件格式:

=DATEDIF(A2,TODAY(),"Y") & IF(DATEDIF(A2,TODAY(),"Y")=1,"年,","年,") & DATEDIF(A2,TODAY(),"YM") & IF(DATEDIF(A2,TODAY(),"YM")=1,"月,","月,") & DATEDIF(A2,TODAY(),"MD") & IF(DATEDIF(A2,TODAY(),"MD")=1," day"," days")

这可以正确处理单数/复数(例如,“1 年”与“2 年”)。

方法 3:计算截至特定日期的年龄

有时,您需要计算特定日期而不是今天的年龄 - 例如,活动时的年龄、注册时的年龄或历史记录时的年龄日期。

公式:

=DATEDIF(A2, B2, "Y")

其中:

  • A2 = 日期出生

  • B2 = 参考日期(活动日期、注册日期、等)

示例:员工雇用年龄日期

[[[TAG_3 40]]][[[ TAG_369]]]

2020-03-01

[[[T AG_387]]]

2021-06-15

姓名

日期出生日期

雇用日期

年龄雇用

约翰史密斯

1988-05-20

=DATEDIF(B2, C2,“Y”)

简美国能源部

1992-11-15

=DATEDIF(B3, C3,“Y”)

具体的完整细分日期:

=DATEDIF(A2,B2,"Y") & " 年," & DATEDIF(A2,B2,"YM") & " 月," & DATEDIF(A2,B2,"MD") & " days"

方法 4:YEARFRAC – 带小数的年龄

当您需要十进制数形式的年龄时(常见于财务计算、精算工作或科学应用中),请使用YEARFRAC.

公式:

=YEARFRAC(A2, TODAY(), 1)

示例输出: 35.87(意味着 35 年和大约 10.5月)

基础选项(第三个参数):

[[ [TAG_434]]]

[[[TAG_48]8]]][[[TAG_494]] ]

实际/365

方法

最佳对于

0

美国30/360

财务计算(美国)

1

[[[TAG _465]]]

实际/实际

最多准确年龄计算

2

[[ [TAG_479]]]

实际/360

银行业务计算

3

忽略闰年

4

欧洲30/360

财务计算(欧盟)

建议:使用1 (实际/实际)年龄计算 - 这是最准确的。

仅获取整数部分:

=INT(YEARFRAC(A2, TODAY(), 1))

要将年龄四舍五入到一位小数:

=ROUND(YEARFRAC(A2, TODAY(), 1), 1)

方法 5:计算多行的年龄

处理人员列表(员工、学生、客户)时,您需要有效的方法来计算每个人的年龄一次。

第 1 步:设置您的数据

[[[TAG _554]]][[[TAG_569] ]]][[[TAG _593]]]

[[[TAG _607]]]

[[[TAG_6 21]]]

A

[[ [TAG_562]]]B

C

姓名

日期出生日期

年龄

爱丽丝约翰逊

1985-03-22

鲍勃威廉姆斯

1990-07-14

卡罗尔戴维斯

1978-11-30

大卫棕色

1995-02-08

[ [[TAG_636]]]

步骤2: 在第一行中输入公式

在单元格 C2 中,输入:

=DATEDIF(B2, TODAY(), "Y")

第 3 步:向下复制

  • 选择C2

  • 双击右下角的小方块(填充手柄)

  • Excel 自动将公式复制到所有行数据

使用表格进行自动扩展:

  1. 选择数据范围(A1:C5)

  2. 按Ctrl+T创建一个表格

  3. 在第一个数据ro中输入公式w 年龄列

  4. Excel 会自动将其应用到所有行以及您添加的新行后来

年龄类别公式:

将年龄分组(对于人口统计有用)分析):

=IF(DATEDIF(B2,TODAY(),"Y")<18,"次要",IF (DATEDIF(B2,TODAY(),"Y")<65,"成人","高级"))

奖励:距离下一个生日还有多少天

一个流行的用例:生日提醒或“距离生日还有多少天”计算。

公式:

=DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))

如何有效:

  1. 从出生日期构造今年的生日

  2. 如果生日已经过了此日期年,加 1 得到明年

  3. 减去今天的日期得到剩余天

示例输出: 47(距生日天数)

替代:下一个生日日期

要显示下一个生日的实际日期:

=DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))

方法比较表

[[ [TAG_753]]][[[ TAG_765]]]

输出

[[[TAG_845] ]]

35

方法[[[ TAG_759]]]

公式

最佳对于

DATEDIF (年)

=DATEDIF(A2,TODAY(),"Y")[ [[TAG_783]]]

35

简单年龄显示

DATEDIF (完整)

=DATEDIF(...) 与 Y,YM, MD

35年10个月12天

精确记录

[[[TAG_第816章YEARFRAC(A2,TODAY(),1)

[[[TA G_826]]]35.87

金融/科学tific

[[[TAG_83 6]]]INT(YEARFRAC)

[[[TAG_841] ]]=INT(YEARFRAC(A2,TODAY(),1))

替代到DATEDIF

[[[ TAG_857]]]建议:

  • 在大多数情况下,请使用 DATEDIF 和“Y”参数

  • 要获得准确的细分,请使用 DATEDIF 和所有三个参数参数

  • 对于十进制年龄,请使用 YEARFRAC 和基础1

常见问题和解决方案

问题:DATEDIF 未出现在自动完成

解决方案:这是正常的。 DATEDIF 是 Microsoft 从未正式记录的遗留函数。只需手动输入即可 - 从 2007 年起,它适用于所有 Excel 版本。

问题:#VALUE!错误

原因:

  • 一个或两个单元格包含文本而不是日期

  • 公式中的空单元格范围

解决方案:

  1. 转换文本迄今为止:=DATEVALUE(A2)

  2. 检查空单元格:=IF(A2="", "", DATEDIF(A2, TODAY(), "Y"))

问题:负结果或#NUM!错误

原因:结束日期早于开始日期(例如,未来的出生日期或日期错误) order)

解决方案:

  1. 交换参数: =DATEDIF(B2, A2, "Y") 而不是 =DATEDIF(A2, B2, "Y")

  2. 添加验证: =IF(A2>TODAY(), "未来日期", DATEDIF(A2, TODAY(), "Y"))

问题:公式显示分号而不是逗号

原因:您的 Excel 使用欧洲区域设置

解决方案: 将逗号替换为分号:

=DATEDIF(A2; TODAY(); "Y")

问题:年龄减少了一位年

原因:通常是日期格式解释问题

解决方案:

  1. 验证公式中的日期是否正确bar

  2. 以 ISO 格式重新输入日期 (YYYY-MM-DD)

  3. 使用 DATEVALUE 显式解析日期

问题:公式有效,但显示为文本

解决方案: 从单元格中删除所有前导撇号,或重新输入等号前不带空格的公式。

Excel 与 Google Sheets

Excel 和 Google Sheets 都支持 DATEDIF,但存在细微差别差异:

[[[TA G_1003]]][[[TAG_1 032]]]

YEARFRAC

功能

Excel

Google 表格

DATEDIF支持

是(隐藏)

是(在自动完成)

[[[TAG_1 037]]]是

是[[[TAG_104] 2]]]

日期解析

区域设置相关

更多灵活

[[ [TAG_1061]]]今天()

是[[ [TAG_1066]]]

[[[TAG_10] 71]]]

Google工作表特定:

  • DATEDIF 出现在自动完成中(与Excel)

  • 日期解析通常更宽容

  • 相同的公式语法适用于大多数情况案例

提示:为了两个平台之间的最大兼容性,请始终使用:

  • ISO日期格式(YYYY-MM-DD)

  • 显式日期函数而不是文本日期

  • 用于年龄计算的 DATEDIF(两者的工作方式相同)

在线替代方案

不想使用电子表格?尝试我们免费的在线年龄计算器立即计算出准确的年龄(以年、月、周和日为单位)。无需公式,只需输入出生日期即可获得精确结果。

在线计算器还提供:

  • 多个单位的年龄(年、月、周、天)

  • 下一个生日倒计时

  • 您所在星期几出生

  • 总天数live

常见问题解答

DATEDIF 对于闰年准确吗?

是的。当单元格包含格式正确的日期时,Excel 会自动考虑闰年和不同的月份长度。 DATEDIF 函数可以正确处理 2 月 29 日生日,并准确计算年龄,而不考虑闰年。

哪种方法最好:DATEDIF 或 YEARFRAC?

使用DATEDIF 当您需要干净的整数(年、月、日)时,这是大多数商业和个人用例的标准。当您特别需要十进制值时,例如在财务计算、精算表或小数年份很重要的科学应用中,请使用 YEARFRAC

我可以仅以月为单位计算年龄吗?

是的。在 DATEDIF 中使用“M”参数:

=DATEDIF(A2, TODAY(), "M")

这将返回出生日期和出生日期之间完整月份的总数今天。

为什么 DATEDIF 没有在 Excel 自动完成中显示?

DATEDIF 是 Microsoft 从 Lotus 1-2-3 继承的兼容性函数。它从未在 Excel 的帮助系统中正式记录,因此它不会出现在自动完成或函数向导中。然而,它功能齐全且用途广泛。只需手动输入即可。

如何计算两个特定日期之间的年龄?

将 TODAY() 替换为包含目标的单元格引用date:

=DATEDIF(A2, B2, "Y")

其中 A2 是出生日期,B2 是您要计算年龄的日期:

这在旧版 Excel 中是否有效?

可以。 DATEDIF 自 Excel 97 起可用。本指南中的公式适用于 Excel 2007、2010、2013、2016、2019、2021 和 Microsoft 365。

如何计算多个人的年龄一次?

在年龄列的第一行中输入 DATEDIF 公式,然后向下拖动填充柄以将其复制到所有行。或者,将您的数据转换为 Excel 表格 (Ctrl+T),公式将自动应用于所有行,包括您稍后添加的新行。

我可以计算年龄并以自定义格式显示吗?

可以。将 DATEDIF 与 TEXT 函数和串联结合起来:

=DATEDIF(A2,TODAY(),"Y") & "y " & DATEDIF(A2,TODAY(),"YM") & "m " & DATEDIF(A2,TODAY(),"MD") & "d"

输出:“35y 10m 12d”