Table of contents
本教程展示了在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函数。
- 为了得到年数。
=datedif(b2, today(), "y")
- 为了获得月数。
=datedif(b2, today(), "ym")
- 为了得到天数。
=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中制作自己的年龄计算器而烦恼--只需点击几下就可以了。
- 选择一个你想插入年龄公式的单元格,转到 Ablebits工具 标签> 日期& 时间 组,并点击 日期& 时间向导 按钮。
- Date & Time Wizard将启动,你将直接进入 年龄 标签。
- 关于 年龄 标签,有3件事情需要你指定。
- 出生数据 作为一个单元格引用或mm/dd/yyyy格式的日期。
- 年龄在 今天的日期 或 具体日期 .
- 选择是否以天、月、年或确切年龄计算年龄。
- 点击 插入公式 按钮。
完成了!
该公式瞬间插入所选单元格,你双击填充柄,将其复制到下一列。
你可能已经注意到,我们的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文件)。