KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中根据出生日期精确计算年龄(年、月、日)?

作者修改日期

在人力资源管理、医疗记录、学生数据库或会员系统等众多实际场景中,准确根据个人出生日期计算其精确到年、月、日的年龄至关重要。如果您在 Excel 中有一份出生日期列表,可能需要快速获取每个人的精确年龄——既可以是包含年、月、日的详细格式,也可以是小数或整数值。精准实现这一计算有助于提升数据准确性,广泛适用于资格审核、政策执行和关键里程碑追踪等任务。本文将为您介绍几种在 Excel 中高效完成此类年龄计算的方法。
以年、月和日计算年龄

目录

根据出生日期计算年龄(年、月、日)

根据出生日期计算小数形式的年龄

根据出生日期计算整数形式的年龄好主意3

VBA 代码 —— 使用自定义宏自动化大规模数据集的年龄计算

其他内置 Excel 方法 —— 使用 Power Query 通过数据转换计算年龄


根据出生日期计算年龄(年、月、日)

一种实用且广泛应用于报告和资格决策的详细年龄计算方法,是通过公式精确返回出生日期与特定参考日期(通常为今日)之间的年、月、日数。该方法特别适用于对时间跨度精度要求较高的场景,例如周年纪念、入学资格审核或福利计算。

选择要显示年龄结果的单元格,然后输入以下公式:

=DATEDIF(A2,$F$2,“Y“)&“ 年, “&DATEDIF(A2,$F$2,“YM“)&“ 个月, “&DATEDIF(A2,$F$2,“MD“)&“ 天“

输入公式后,按 Enter,即可使用 Excel 的自动填充柄向下拖动,将公式填充至其他行。

在此公式中,A2 为包含出生日期的单元格,F2 则应填入参考日期(例如今天的日期)。该结构可提供精确的年龄分解,但请注意:两个单元格均需设置为日期格式。若出现 #NUM!错误,可能是出生日期晚于参考日期,请仔细核对输入内容。
应用公式以年、月和日计算年龄


根据出生日期计算小数形式的年龄

当您需要以小数形式呈现年龄(例如用于统计报告、快速年龄分组或资格截止判断)时,简洁的公式更为实用。该方法可生成如“24.11”这样的年龄值,便于数据分析与筛选。

选择要显示小数年龄的单元格,然后输入以下公式:

=DATEDIF(A2,$F$2,"Y")&"."&DATEDIF(A2,$F$2,"YM")

按下 Enter 确认公式,然后向下拖动填充柄,即可自动将其应用到其他行。

与前述方法一样,A2 为您的出生日期,F2 应设为当前或参考日期。请确保日期单元格格式正确。此方法简单直接,便于处理数值数据,但未考虑天数——如需该级别细节,请改用完整分解法。
应用公式以小数形式计算年龄


根据出生日期计算整数形式的年龄

如果您需要获取整数形式的年龄(常用于教育资格、保险或访问控制),整数年龄结果不仅足够,而且通常是必需的。Kutools for Excel 提供了专用的“基于生日计算年龄”功能,省去了手动输入复杂公式的麻烦,让这一过程变得轻松高效。在处理大量数据列表或频繁执行此类计算时,该功能尤为实用。

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。集成 AI 能力,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

免费安装 Kutools for Excel 后,请按以下步骤操作:

1. 选择要显示计算结果的单元格,然后单击 Kutools > 公式助手 > 公式助手
点击 Kutools 的公式助手功能

2. 在公式助手对话框中,从基于生日计算年龄部分选择选择一个公式,然后为 Date 文本框选择包含出生日期的单元格,再单击 OK
选择“根据生日计算年龄”公式并设置参数

3. 现在您将获得整数形式的年龄;根据需要向下拖动填充柄,即可将其快速应用到其他单元格,有效避免手动输入错误,轻松简化重复性年龄计算任务。
年龄已按整数计算完成

提示:若希望年龄随时间自动更新,请确保在 Excel 中将参考日期设为 =TODAY()


VBA 代码 —— 使用自定义宏自动化大规模数据集的年龄计算

当您需要处理数千条记录,并为每条记录计算以年、月、日形式呈现的年龄时,手动拖动公式既耗时又费力。借助 VBA 宏,可一次性自动完成整列年龄计算,大幅减少重复操作并确保结果一致——即使您的出生日期列表频繁更新也毫无影响。此方法最适合熟悉代码的高级用户或负责批量数据更新的人员。

1. 单击开发工具>Visual Basic,打开 Microsoft Visual Basic for Applications 窗口;然后单击插入> 模块,并将以下代码输入到模块中:

Function AgeYMD(ByVal dob As Date, ByVal refDate As Date) As String
'Updated by Extendoffice 20250902
    Dim y As Long, m As Long, d As Long
    Dim t As Date

    If Not IsDate(dob) Or Not IsDate(refDate) Or refDate < dob Then
        AgeYMD = "Invalid date"
        Exit Function
    End If

    ' Years
    y = Year(refDate) - Year(dob)
    If DateSerial(Year(refDate), Month(dob), Day(dob)) > refDate Then y = y - 1

    ' Move dob forward by y years
    t = DateAdd("yyyy", y, dob)

    ' Months
    m = DateDiff("m", t, refDate)
    If DateAdd("m", m, t) > refDate Then m = m - 1

    ' Move temp forward by m months
    t = DateAdd("m", m, t)

    ' Days (now always >= 0)
    d = refDate - t

    AgeYMD = y & " Years, " & m & " Months, " & d & " Days"
End Function

Sub CalculateAgesAllRows()
    Dim ws As Worksheet, lastRow As Long, birthCell As Range, resultCell As Range
    Dim refDate As Date, xTitleId As String
    xTitleId = "KutoolsforExcel"

    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Example prompt; default is today. Make sure you enter a valid date (e.g., 2025-09-02)
    refDate = Application.InputBox("Enter reference date (e.g., 2025-09-02)", _
                                   xTitleId, Date, Type:=1)

    For Each birthCell In ws.Range("A2:A" & lastRow)
        Set resultCell = ws.Cells(birthCell.Row, "B")
        If IsDate(birthCell.Value) Then
            resultCell.Value = AgeYMD(CDate(birthCell.Value), refDate)
        Else
            resultCell.Value = "Invalid date"
        End If
    Next birthCell
End Sub

2. 单击运行按钮运行按钮执行。系统将提示您输入参考日期(例如今天的日期),随后宏会为 A 列中的每个出生日期,在 B 列中自动写入计算出的年龄。

提示:请确保 A 列包含有效日期,且第一行为标题(数据从 A2 开始)。若结果显示“Invalid date”,请检查源列的日期格式。

此 VBA 自动化方案适用于大型或需定期更新的数据集,但要求使用启用宏的文件,并正确配置信任中心设置。若您不希望使用代码,可考虑采用 Power Query 作为无代码替代方案。


其他内置 Excel 方法 —— 使用 Power Query 通过数据转换计算年龄

Power Query 在 Excel 现代界面中提供了一种用户友好、无需编码的年龄计算方式。只需将包含出生日期的表格加载到 Power Query,即可轻松添加自定义列,以年、月、日的形式自动计算年龄——全程无需输入公式或手动复制粘贴。此方法特别推荐给需要处理导入数据,或定期进行数据转换与刷新计算的用户。

操作步骤:

1. 选择您的出生日期表,然后转到数据> 从表格/区域,将数据加载到 Power Query。

2. 在 Power Query 编辑器中,依次点击添加列> 自定义列

3. 在公式框中输入以下 M 代码,即可计算年龄(年):

Date.Year(DateTime.LocalNow()) - Date.Year([DateOfBirth])

请根据需要将 DateOfBirth 替换为您的列标题。

在 Power Query 中使用公式计算年份

要计算更详细的分解结果(年、月、日),您可以使用以下代码分别添加列:

let
    Today   = Date.From(DateTime.LocalNow()),
    Birth   = Date.From([Birthday]), Years   = Date.Year(Today) - Date.Year(Birth) -
              (if Date.AddYears(Birth, Date.Year(Today)-Date.Year(Birth)) > Today then 1 else 0),
    AnchorY = Date.AddYears(Birth, Years),
    mDiff   = (Date.Year(Today)-Date.Year(AnchorY))*12 + (Date.Month(Today)-Date.Month(AnchorY)),
    Months  = if Date.AddMonths(AnchorY, mDiff) > Today then mDiff-1 else mDiff,
    AnchorM = Date.AddMonths(AnchorY, Months),
    Days    = Duration.Days(Today - AnchorM)
in
    Text.From(Years) & " years " & Text.From(Months) & " months " & Text.From(Days) & " days"
在 Power Query 中使用公式计算年、月和日

4. 单击 OK,即可根据所用代码生成年龄列,或年、月、日列。

4. 然后单击关闭并加载,即可将转换后的数据返回工作表。

注意事项与故障排除:

  • Power Query 能高效处理大型数据集,并在您刷新时自动重新计算。
  • 若您的出生日期列包含无效或空白条目,请先验证数据的完整性,再创建自定义列。
  • 请务必核对列名,并据此调整公式。

Power Query 非常适合希望在无需编写 Excel 公式或宏的情况下,轻松获得动态且可重复使用解决方案的用户。不过,Excel 2016 之前的版本或 Excel Online(具体取决于功能集)可能不支持此功能。


故障排除与建议:
无论您选择哪种年龄计算方法,请务必确认源单元格已设置为日期格式;若出现意外结果(例如负年龄或错误值),请仔细检查计算逻辑。使用公式时,静态参考日期不会随时间自动更新,因此请使用 =TODAY()以确保年龄始终准确最新。VBA 和 Power Query 解决方案更适合高级、大规模或需定期刷新的报表,请根据实际需求谨慎评估,选择最契合您工作流程的方法。在应用宏或执行大规模转换前,请务必备份文件,必要时保留副本,以防数据丢失或意外更改。


最佳办公效率工具

🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 LOOKUP多条件 VLookup  |  多值 VLookup  |   跨多工作表 VLookup   |   模糊查找……
高级下拉列表快速创建下拉列表   |  级联下拉列表   |  多选下拉列表……
列管理器添加指定数量的列|移动列|切换隐藏列的可见性状态|比较区域与列……
特色功能网格聚焦   |  设计视图   |增强编辑栏   | 工作簿和表管理器   |  资源库(自动文本)|  日期提取   |  汇总工作表  |  加密/解密单元格   | 按列表发送邮件   |  超级筛选   |   特殊筛选(筛选粗体单元格/斜体/删除线……) ......
精选 15 工具集12 文本工具添加文本删除特定字符,……)|   50+ 图表 类型甘特图,……)|   40+ 实用公式基于生日计算年龄,……)|   19 插入工具插入二维码从路径插入图片,……)|   12 转换工具小写金额转大写汇率转换,……)|   7 合并和拆分工具高级合并行分割单元格,……)|……更多
在您的首选语言中使用 Kutools – 支持英语、西班牙语、德语、法语、中文及 40+ 种其他语言!

使用 Kutools for Excel 大幅提升您的 Excel 技能,体验前所未有的高效。Kutools for Excel 提供 300 多项高级功能,助您提升生产力、节省时间。立即点击此处,获取您最需要的功能……


Office Tab 为 Office 带来标签式界面,让您的工作更轻松

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中启用标签式编辑和阅读
  • 在同一个窗口的新标签页中打开并创建多个文档,而非在新窗口中。
  • 将您的工作效率提升 50%,每天减少数百次鼠标点击!

所有 Kutools 插件,一个安装程序

Kutools for Office 套件捆绑了适用于 Excel、Word、Outlook 和 PowerPoint 的插件以及 Office Tab Pro,非常适合需要跨多个 Office 应用高效协作的团队。

ExcelWordOutlookTabsPowerPoint
  • 一体化套件— Excel、Word、Outlook 和 PowerPoint 插件 + Office Tab Pro
  • 一个安装程序,一个许可证— 几分钟内完成设置(支持 MSI)
  • 协同效果更佳— 在多个 Office 应用中实现高效协同
  • 30 天全功能试用— 无需注册,无需信用卡
  • 超值之选— 比单独购买插件更省钱