如何在Excel中根据生日计算年龄

  • Share This
Michael Brown

本教程展示了在Excel中从生日获得年龄的不同方法。 你将学习到一些公式,以完整的年数计算年龄,获得今天或特定日期的准确年龄(年、月、日)。

在Excel中没有计算年龄的特殊功能,但是存在一些不同的方法将出生日期转换为年龄。 本教程将解释每种方法的优点和缺点,展示如何在Excel中制作一个完美的年龄计算公式,并为解决一些特定的任务而调整它。

    如何在Excel中根据出生日期计算年龄

    在日常生活中,问题是" 你多大了? "在Microsoft Excel中,你可以用公式计算出以月、日、小时甚至分钟为单位的准确年龄。 但是,让我们传统一点,先学习如何从DOB计算年龄的年数。

    以年龄为单位的Excel基本公式

    你通常如何计算一个人的年龄呢? 只需将出生日期减去当前日期即可。 这个传统的年龄公式也可以在Excel中使用。

    假设B2单元格中有一个出生日期,计算年龄的公式如下。

    =(今天()-b2)/365

    公式的第一部分(TODAY()-B2)返回当前日期和出生日期之间的差值是天数,然后你用这个数字除以365,得到年数。

    这个公式很明显,也很容易记住,但是,有一个小问题。 在大多数情况下,它返回的是一个小数,如下图所示。

    要显示完整的年数,使用INT函数将小数点四舍五入到最接近的整数。

    =int((today()-b2)/365)

    缺点。 在Excel中使用这个年龄公式会产生相当准确的结果,但并非完美无缺。 除以一年中的平均天数在大多数情况下都能正常工作,但有时会把年龄弄错。 例如,如果某人出生于2月29日,而今天是2月28日,该公式会使一个人大一天。

    作为一个替代方法,你可以用365.25而不是365除以,因为每四年有366天。 然而,这种方法也不是完美的。 例如,如果你要计算一个还没有经历过闰年的孩子的年龄,除以365.25会产生一个错误的结果。

    总的来说,用出生日期减去当前日期在正常生活中非常有效,但在Excel中却不是最理想的方法。 在本教程中,你将进一步学习几个特殊的函数,这些函数无论在哪一年都能完美地计算出年龄。

    用YEARFRAC函数从出生日期计算年龄

    在Excel中,将DOB转换为年龄的一个更可靠的方法是使用YEARFRAC函数,该函数返回年份的分数,即两个日期之间的整数天数。

    YEARFRAC函数的语法如下。

    YEARFRAC(start_date, end_date, [base])

    前两个论点是显而易见的,几乎不需要任何额外的解释。 基础 是一个可选的参数,定义了要使用的日计数基础。

    要制作一个完全真实的年龄公式,请向YEARFRAC函数提供以下数值。

    • 开始日期 - 出生日期。
    • 结束日期 - TODAY()函数用来返回今天的日期。
    • 基础 - 使用基础 1 这告诉Excel用每月的实际天数除以每年的实际天数。

    考虑到上述情况,根据出生日期计算年龄的Excel公式如下。

    年薪制( 出生日期 , TODAY(), 1)

    假设出生日期在单元格B2中,公式的形状如下。

    =yearfrac(b2, today(), 1)

    像前面的例子一样,YEARFRAC函数的结果也是一个小数,要解决这个问题,使用ROUNDDOWN函数,最后一个参数为0,因为你不想要任何小数位。

    因此,这里有一个改进的YEARFRAC公式来计算Excel中的年龄。

    =rounddown(yearfrac(b2, today(), 1), 0)

    在Excel中用DATEDIF计算年龄

    在Excel中还有一种将出生日期转换为年龄的方法是使用DATEDIF函数。

    DATEDIF(start_date, end_date, unit)

    这个函数可以返回两个日期之间在不同时间单位上的差异,如年、月和日,这取决于你在 单位 争论。

    • Y - 返回 完整的年份 在开始和结束日期之间。
    • M - 返回 完整的月份 日期之间。
    • D--------------返回 在这两个日期之间。
    • YM - 返回 几个月 ,无视日和年。
    • MD - 返回的差值为 ,忽略了月和年。
    • YD - 返回以下数据的差异 ,无视岁月。

    由于我们的目标是计算出 年纪在 ,我们使用的是 "y "单位。

    DATEDIF( 出生日期 , TODAY(), "y")

    在这个例子中,DOB在B2单元格中,你在年龄公式中引用这个单元格。

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

    在这种情况下,不需要额外的四舍五入功能,因为带有 "y "单位的DATEDIF公式可以计算出整年的数量。

    如何从生日得到年龄,以年、月、日为单位

    正如你刚才所看到的,用一个人活过的整数年来计算年龄是很容易的,但它并不总是足够的。 如果你想知道确切的年龄,即某人的出生日期和当前日期之间有多少年、多少月、多少天,可以写3个不同的DATEDIF函数。

    1. 为了得到年数。 =datedif(b2, today(), "y")
    2. 为了获得月数。 =datedif(b2, today(), "ym")
    3. 为了得到天数。 =datedif(b2,today(), "md")

    其中B2是出生日期。

    然后,将上述函数串联在一个公式中,像这样。

    =DATEDIF(B2,TODAY(), "Y") & DATEDIF(B2,TODAY(), "YM") & DATEDIF(B2,TODAY(), "MD")

    上述公式返回3个数字(年、月、日),并串联在一个文本字符串中,如下图所示。

    为了使结果更有意义,用逗号将数字分开,并定义每个数值的含义。

    =DATEDIF(B2,TODAY(), "Y") & " Years, " & DATEDIF(B2,TODAY(), "YM") & " Months, " & DATEDIF(B2,TODAY(), "MD" ) & " Days"

    现在的结果看起来好多了。

    这个公式很好用,但你可以通过隐藏零值来进一步改进它。 为此,添加3个检查0的IF语句,每个DATEDIF一个。

    =IF(DATEDIF(B2, TODAY(), "y")=0,",DATEDIF(B2, TODAY(), "y")&" 年, "& IF(DATEDIF(B2, TODAY(), "ym")=0,",DATEDIF(B2, TODAY(), "ym")&" 月, "& IF(DATEDIF(B2, TODAY(), "md")=0, ", DATEDIF(B2, TODAY()," md")&" 日" )

    下面的截图展示了Excel年龄公式的最终运行情况--它以年、月、日为单位返回年龄,只显示了 非零 价值。

    提示:如果你正在寻找一个Excel公式来计算年龄,在 年和月 ,取上述公式,去掉最后一个计算天数的IF(DATEDIF())块。

    在Excel中计算年龄的具体公式

    上面讨论的通用年龄计算公式在大多数情况下非常有效。 然而,在某些情况下,你可能需要一些非常具体的东西。 当然,不可能涵盖每一种情况,但下面的例子将给你一些想法,你可以根据你的特定任务来调整年龄公式。

    如何在Excel中计算某一特定日期的年龄

    如果你想知道某人在某一日期的年龄,使用上面讨论的DATEDIF年龄公式,但将第2个参数中的TODAY()函数替换为具体日期。

    假设出生日期是在B1,以下公式将返回2020年1月1日的年龄。

    =DATEDIF(B1, "1/1/2020", "Y") & " 年, " & DATEDIF(B1, "1/1/2020", "YM") & " 月, " & DATEDIF(B1, "1/1/2020", "MD") & " 日"

    为了使你的年龄公式更加灵活,你可以在某个单元格中输入日期,并在公式中引用该单元格。

    =DATEDIF(B1,B2, "Y") & " 年,"& DATEDIF(B1,B2, "YM") & " 月,"& DATEDIF(B1,B2, "MD") & " 日"

    其中B1是DOB,B2是你想计算年龄的日期。

    计算某一年的年龄

    在没有确定完整的计算日期,而你只知道年份的情况下,这个公式就很方便。

    假设你正在使用一个医疗数据库,而你的目标是找出病人在接受最后一次全面体检时的年龄。

    假设出生日期在第3行开始的B列,最后一次体检的年份在C列,年龄计算公式如下。

    =DATEDIF(B3,DATE(C3, 1, 1), "y")

    因为没有定义体检的确切日期,所以你使用DATE函数,用一个任意的日期和月份参数,例如DATE(C3, 1, 1)。

    DATE函数从B3单元格中提取年份,使用你提供的月和日的数字(本例中为1-1)生成一个完整的日期,并将该日期传递给DATEDIF。 结果,你得到病人在某年1月1日的年龄。

    找出一个人达到N岁的日期

    假设你的朋友出生于1978年3月8日,你如何知道他在哪一天满50岁? 通常,你只需在这个人的出生日期上加上50年。 在Excel中,你也可以用DATE函数做同样的事情。

    =date(year(b2) + 50, month(b2), day(b2))

    其中B2是出生日期。

    与其在公式中硬编码年数,你可以引用某个单元格,让你的用户输入任何年数(下面截图中的F1)。

    从不同的单元格中的日、月、年计算出年龄

    当一个出生日期被分割成3个不同的单元格(例如,年在B3,月在C3,日在D3),你可以用这种方式计算年龄。

    • 通过使用DATE和DATEVALUE函数获得出生日期。

      DATE(B3,MONTH(DATEVALUE(C3& "1")),D3)

    • 将上述公式嵌入到DATEDIF中,根据出生日期以年、月、日计算年龄。 =DATEDIF(DATE(B3, MONTH(DATEVALUE(C3& "1")), D3), TODAY(), "y") & " 年, "& DATEDIF(DATE(B3, MONTH(DATEVALUE(C3& "1")), D3), TODAY(), "ym" ) & " 月, "& DATEDIF(DATE(B3, MONTH(DATEVALUE(C3&;"1") ) , D3) , "md" & " 日"

    更多关于计算一个日期之前/之后的天数的例子,请看如何在Excel中计算日期之后或直到的天数。

    Excel中的年龄计算器

    如果你想在Excel中拥有自己的年龄计算器,你可以通过使用下面解释的几个不同的DATEDIF公式来制作一个。 如果你不想重新发明轮子,你可以使用我们的Excel专业人士创建的年龄计算器。

    如何在Excel中创建一个年龄计算器

    现在你知道了如何在Excel中制作年龄公式,你可以建立一个自定义的年龄计算器,例如这个计算器。

    注意:要查看嵌入式工作簿,请允许营销cookies。

    你在上面看到的是一个嵌入的Excel在线表格,所以请随意在相应的单元格中输入你的出生日期,你会在瞬间得到你的年龄。

    计算器使用以下公式,根据A3单元格中的出生日期和今天的日期来计算年龄。

    • B5中的公式是以年、月、日计算年龄。 =DATEDIF(B2,TODAY(), "Y") & " Years, " & DATEDIF(B2,TODAY(), "YM") & " Months, " & DATEDIF(B2,TODAY(), "MD" ) & " Days"
    • B6中的公式是以月为单位计算年龄。 =DATEDIF($B$3,TODAY(), "m")
    • B7中的公式是以天为单位计算年龄。 =DATEDIF($B$3,TODAY(), "d")

    如果你对Excel表格控件有一些经验,你可以添加一个选项来计算特定日期的年龄,就像下面的截图所示。

    为此,添加几个选项按钮( 开发者标签 > 插入 > 表格控制 > 选项按钮 然后,写一个IF/DATEDIF公式来获得今天的日期或用户指定的日期的年龄。

    该公式的工作逻辑如下。

    • 如果 今天的日期 选项框被选中,值1出现在链接的单元格中(本例中为I5),年龄公式基于今天的日期进行计算。 IF($I$5=1, DATEDIF($B$3,TODAY(), "Y") & " Years, " & DATEDIF($B$3,TODAY(), "YM") & " Months, " & DATEDIF($B$3, TODAY(), "MD" ) & " Days" )
    • 如果 具体日期 选项按钮被选中,并且在单元格B7中输入了一个日期,年龄将在指定的日期计算。 IF(ISNUMBER($B$7), DATEDIF($B$3, $B$7, "Y") & " 年, " & DATEDIF($B$3, $B$7, "YM") & " 月, " & DATEDIF($B$3, $B$7, "MD") & " 天, ")

    最后,将上述函数相互嵌套,你将得到完整的年龄计算公式(在B9)。

    =IF($I$5=1, DATEDIF($B$3, TODAY(), "Y") & " Years, " & DATEDIF($B$3, TODAY(), "YM") & " Months, " & DATEDIF($B$3, TODAY(), "MD") & " Days", IF(ISNUMBER($B$7), DATEDIF($B$3, $B$7, "Y" ) & " Years, " & DATEDIF($B$3, $B$7, "YM") & " Months, " & DATEDIF($B$3, $B$7, "MD" ) & " Days", " " )

    B10和B11中的公式以同样的逻辑工作。 当然,它们要简单得多,因为它们只包括一个DATEDIF函数,分别以完整的月数或日数返回年龄。

    要了解详情,我邀请你下载这个Excel年龄计算器,并研究单元格B9:B11中的公式。

    下载适用于Excel的年龄计算器

    适用于Excel的即用型年龄计算器

    我们的终极套件的用户不必为在Excel中制作自己的年龄计算器而烦恼--只需点击几下就可以了。

    1. 选择一个你想插入年龄公式的单元格,转到 Ablebits工具 标签> 日期& 时间 组,并点击 日期& 时间向导 按钮。

    2. Date & Time Wizard将启动,你将直接进入 年龄 标签。
    3. 关于 年龄 标签,有3件事情需要你指定。
      • 出生数据 作为一个单元格引用或mm/dd/yyyy格式的日期。
      • 年龄在 今天的日期 具体日期 .
      • 选择是否以天、月、年或确切年龄计算年龄。
    4. 点击 插入公式 按钮。

    完成了!

    该公式瞬间插入所选单元格,你双击填充柄,将其复制到下一列。

    你可能已经注意到,我们的Excel年龄计算器创建的公式比我们迄今为止讨论的那些公式更复杂,但它迎合了时间单位的单数和复数,如 "日 "和 "天"。

    如果你想摆脱 "0天 "这样的零单位,选择 请勿 显示零单位 复选框。

    如果你想测试这个年龄计算器,以及发现更多60个节省时间的Excel插件,欢迎你在本帖末尾下载我们的终极套件的试用版。

    如何突出某些年龄段(低于或超过特定年龄)?

    在某些情况下,你可能不仅需要在Excel中计算年龄,还需要突出显示包含低于或高于某一特定年龄的单元格。

    如果你的年龄计算公式返回完整的年数,那么你可以根据这些简单的公式创建一个常规的条件格式化规则。

    • 要突出显示等于或大于18岁的年龄:=$C2>=18
    • 强调18岁以下的年龄:=$C2<18

    其中C2是年龄栏中最上面的单元格(不包括栏头)。

    但如果你的公式是以年和月为单位显示年龄,或以年、月、日为单位显示年龄,怎么办? 在这种情况下,你必须创建一个基于DATEDIF公式的规则,从出生日期的年数计算年龄。

    假设出生日期在从第2行开始的B列,公式如下。

    • 为了强调年龄 根据 18(黄色)。 =DATEDIF($B2, TODAY(), "Y")<18
    • 为了强调年龄 之间 18和65(绿色)。 =AND(DATEDIF($B2, TODAY(), "Y")>=18, DATEDIF($B2, TODAY(), "Y")<=65)
    • 为了强调年龄 65(蓝色)。 =DATEDIF($B2, TODAY(), "Y")>65

    要根据上述公式创建规则,选择你想突出显示的单元格或整行,到 首页 标签> 风格 组,并点击 条件性格式化 > 新规则... > 使用一个公式来决定哪些单元格需要格式化 .

    详细的步骤可以在这里找到:如何根据公式制作条件格式化规则。

    这就是在Excel中计算年龄的方法。 我希望这些公式对你来说很容易学习,你会在你的工作表中尝试一下。 谢谢你的阅读,希望下周能在我们的博客上见到你

    可用的下载

    Excel年龄计算的例子(.xlsx文件)。

    终极套装14天全功能版(.exe文件)。

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.