如何在 Excel 中计算年龄(DATEDIF 和 YEARFRAC)+ 免费模板
使用 DATEDIF、YEARFRAC 和 TODAY() 的分步 Excel 公式从出生日期计算年龄。包括实用示例、故障排除提示和免费的在线年龄计算器。
在 Excel 中计算年龄是最常见的电子表格任务之一 - 无论您是管理员工记录、跟踪客户生日还是构建学校数据库。本综合指南涵盖了您需要的所有方法,从简单的年份计算到以年、月、日为单位的精确年龄细分。
目录
开始之前:日期格式基础知识
方法 1:DATEDIF – 以完整年数表示的年龄
方法 2:以年数、月数和年龄表示的年龄天数
方法 3:计算截至特定日期的年龄
方法 4:YEARFRAC – 年龄小数
方法 5:计算多行的年龄
奖励:距离下一个日期的天数生日
方法比较表
常见问题和解决方案
Excel 与 Google 表格
在线替代方案
常见问题解答
开始之前:日期格式基础知识
开始之前公式,确保您的日期格式正确。 Excel 会区分实际日期和看起来像日期的文本,这种区别很重要。
如何检查单元格是否包含真实日期:
单击包含日期
查看编辑栏 - 如果它显示数字(例如 45678),则它是真实日期
如果它显示文本(例如"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
日期的出生
年龄
1990-03-15
=DATEDIF(A2,今天(), “Y”)
=DATEDIF(A3,今天(), “Y”)
=DATEDIF(A4, TODAY(), "Y")
结果(截至一月份2026):
日期的出生 | 年龄 [ [[TAG_206]]] |
|---|---|
1990-03-15 | 35 [[[TAG_ 216]]] |
1985-07-22[[[TAG_ 221]]] | 40 | [ [[TAG_227]]]
2000年12月1日 [ [[TAG_232]]] | 25 | [[[TAG_2 37]]]
注意: 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= 参考日期(活动日期、注册日期、等)
示例:员工雇用年龄日期
姓名 | 日期出生日期 | 雇用日期 | 年龄雇用 |
|---|---|---|---|
约翰史密斯 | 1988-05-20 | [[[ TAG_369]]]=DATEDIF(B2, C2,“Y”) | |
简美国能源部 | 1992-11-15 | [[[T AG_387]]]=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月)
基础选项(第三个参数):
方法 | 最佳对于 | |
|---|---|---|
0 | 美国30/360 | 财务计算(美国) |
1 [[[TAG _465]]] | 实际/实际 | 最多准确年龄计算 |
2 [[ [TAG_479]]] | 实际/360 | 银行业务计算 | [[[TAG_48]8]]]
3 | [[[TAG_494]] ]忽略闰年 | |
4 | 欧洲30/360 | 财务计算(欧盟) |
建议:使用1 (实际/实际)年龄计算 - 这是最准确的。
仅获取整数部分:
=INT(YEARFRAC(A2, TODAY(), 1))要将年龄四舍五入到一位小数:
=ROUND(YEARFRAC(A2, TODAY(), 1), 1)方法 5:计算多行的年龄
处理人员列表(员工、学生、客户)时,您需要有效的方法来计算每个人的年龄一次。
第 1 步:设置您的数据
A | [[ [TAG_562]]]B | C | [[[TAG_569] ]]]
|---|---|---|
姓名 | 日期出生日期 | 年龄 |
爱丽丝约翰逊 | 1985-03-22 | [[[TAG _593]]]|
鲍勃威廉姆斯 | 1990-07-14 | [[[TAG _607]]]|
卡罗尔戴维斯 | 1978-11-30 | [[[TAG_6 21]]]|
大卫棕色 | 1995-02-08 | [ [[TAG_636]]] |
步骤2: 在第一行中输入公式
在单元格 C2 中,输入:
=DATEDIF(B2, TODAY(), "Y")第 3 步:向下复制
选择C2
双击右下角的小方块(填充手柄)
Excel 自动将公式复制到所有行数据
使用表格进行自动扩展:
选择数据范围(A1:C5)
按Ctrl+T创建一个表格
在第一个数据ro中输入公式w 年龄列
Excel 会自动将其应用到所有行以及您添加的新行后来
年龄类别公式:
将年龄分组(对于人口统计有用)分析):
=IF(DATEDIF(B2,TODAY(),"Y")<18,"次要",IF (DATEDIF(B2,TODAY(),"Y")<65,"成人","高级"))奖励:距离下一个生日还有多少天
一个流行的用例:生日提醒或“距离生日还有多少天”计算。
公式:
=DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))如何有效:
从出生日期构造今年的生日
如果生日已经过了此日期年,加 1 得到明年
减去今天的日期得到剩余天
示例输出: 47(距生日天数)
替代:下一个生日日期
要显示下一个生日的实际日期:
=DATE(YEAR(TODAY()) + (DATE(YEAR(TODAY()),MONTH(A2),DAY(A2))方法比较表
方法[[[ TAG_759]]] | 公式 | [[[ TAG_765]]]最佳对于 | |
|---|---|---|---|
DATEDIF (年) |
| 35 | 简单年龄显示 |
DATEDIF (完整) |
| 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)) | [[[TAG_845] ]]替代到DATEDIF |
[[[ TAG_857]]]建议:
在大多数情况下,请使用 DATEDIF 和“Y”参数
要获得准确的细分,请使用 DATEDIF 和所有三个参数参数
对于十进制年龄,请使用 YEARFRAC 和基础1
常见问题和解决方案
问题:DATEDIF 未出现在自动完成
解决方案:这是正常的。 DATEDIF 是 Microsoft 从未正式记录的遗留函数。只需手动输入即可 - 从 2007 年起,它适用于所有 Excel 版本。
问题:#VALUE!错误
原因:
一个或两个单元格包含文本而不是日期
公式中的空单元格范围
解决方案:
转换文本迄今为止:
=DATEVALUE(A2)检查空单元格:
=IF(A2="", "", DATEDIF(A2, TODAY(), "Y"))
问题:负结果或#NUM!错误
原因:结束日期早于开始日期(例如,未来的出生日期或日期错误) order)
解决方案:
交换参数:
=DATEDIF(B2, A2, "Y")而不是=DATEDIF(A2, B2, "Y")添加验证:
=IF(A2>TODAY(), "未来日期", DATEDIF(A2, TODAY(), "Y"))
问题:公式显示分号而不是逗号
原因:您的 Excel 使用欧洲区域设置
解决方案: 将逗号替换为分号:
=DATEDIF(A2; TODAY(); "Y")问题:年龄减少了一位年
原因:通常是日期格式解释问题
解决方案:
验证公式中的日期是否正确bar
以 ISO 格式重新输入日期 (YYYY-MM-DD)
使用 DATEVALUE 显式解析日期
问题:公式有效,但显示为文本
解决方案: 从单元格中删除所有前导撇号,或重新输入等号前不带空格的公式。
Excel 与 Google Sheets
Excel 和 Google Sheets 都支持 DATEDIF,但存在细微差别差异:
功能 | 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”