在 Excel 里搞年龄这事儿,实际上没啥复杂的公式,就是得学会如何把一堆数字揉成一团,最终还得抖落出来个个位数。别整那些大道理,直接上手操作,你会发现这玩意儿比写代码还顺手。咱们不说虚的,就看看如何用 `DATEDIF` 这招,把出生那一天的绝对工夫戳,换算成人类的“岁数”概念。 打开你的 workbook,别急着找日期格式,先把该列的数据框选出来,哪怕它是零散的几行。
这时候不要管它里面是文本还是数字,直接按 `Ctrl + Shift + Enter` 按下这个组合键。
为啥如此特殊?出于你要用到的是数组公式,它背后别看是个公式,但 Excel 需求它去“分析”整列的数据,故此务必强制多行输入。一旦确认,你会看到公式栏里出现了 `DAYS` 这种函数名,紧接着后面跟着个 `1` 要么 `2`,这实际上就是告诉 Excel:我要算的是整整一年的天数,还是包含了中间那几天呢?大量人第一次用好办晕,出于 Excel 默认会把 `+1` 这种写法理解为“包含当天”,这在算年龄这种扣五个月的情况会翻车,害得结局多出一个天。
故此,经验之谈是:算正整数年龄,别搞 `+1`,直接看 `2`,这样算出来的就是标准的整数岁。 假设你的数据在 A 列,B 列存着出生年月日。先别急着点公式,先在 A1 打个 `=DAYS(A2-B2, 2)`,回车试试。你会发现,电脑挺智慧,它会自动把 B2 里的日期当成字符串处理,然后把 A2(起始工夫)和 B2(终止工夫)拉平。
这时候,要是你点一下 A2,你会发现结局突然变了,多了一个零。
为啥?出于 Excel 把 `DAYS` 函数的参数判断搞混了,它当作 A2 才是终止点,B2 才是起点,要么反之,害得它把跨度算大了。
这时候得改改,把参数顺序调个位。还是得老老实实点 `Ctrl + Shift + Enter`,这次你大约率能看到个零消亡了,结局变成 53 岁。
这时候,要是你再点一下 A2,结局又变了,变成了 54 岁,并且那个零又回来了。 别急,这时候的零实际上是个符号,代表“包含当天”,而 Excel 默认 `DAYS` 函数里,要是参数没写死是 1 还是 2,它就默认是 1。
这就形成了困惑:我想算的是不含当天的“周岁”,还是含当天的“周岁”?这就得看你的业务逻辑了。
要是要算周岁,比如某人 2023 年 1 月 1 日出生,2023 年 12 月 31 日,按理说应当 36 岁,但公式算出来可能是 37 岁,出于他算的是“满了 37 天”后的状态,要么反之。
这时候就要靠经验了:要么把公式里的 `2` 改成 `1`,要么在公式开头加个 `0`(变成 `0+DAYS...`),这样强制锁定天数,算出来就是不含当日的周岁。 实际上这就好比你数钱,有的系统是按天算,有的系统是按月算。算年龄最讲究的就是“不含当日”。
要是你发现每次点一下单元格,结局都在跳,那说明你对函数的理解还停留在“自动填充”的阶段。
这时候要明白,`DAYS` 函数作为一个数组公式,它每次渲染时都会重新计算 A 2 和 B 2 的差值。
故此,要是你想固定算一次,务必固定单元格。 举个具体的例子吧。张三出生于 2000 年 6 月 1 日,你要算他 2023 年 12 月 31 日的年龄。用公式 `=DAYS(B2-A2, 2)`,回车后,你按 Ctrl+Shift+Enter,会看到结局 22。
要是你按常规逻辑,从出生那天到今天一共是不是正好 22 年?实际上不然,出于 2000 年 6 月 1 日到 2023 年 5 月 31 日正好是 22 年。多出来的这 2 天(6 月 1 日到 6 月 1 日),正好是一整年。
故此 `DAYS(..., 2)` 算出来的是包含终止日期的总天数换算的年龄。
要是你想要不含终止日期的纯周岁,就得把公式里的 2 换成 1,变成 `=DAYS(B2-A2, 1)`。
这样算出来的结局就是 21 岁。
这就是公式里那个 `1` 和 `2` 的魔力所在,它是管住“ jours comptés ”这一参数的开关。 还有个小细节,万一你的日期格式存的是文本呢?比如有个同事把 2023-10-01 存成了"2023/10/1",这时候公式会报错要么算错。
这时候就得用 `VALUE` 函数来洗洗黑。在公式里加个 `=VALUE(DAYS(A2-B2, 1))`,你能够告诉 Excel:“嘿,A2 和 B2 别看是文本,但它们在数值上等于啥,就按啥数值算。”这样哪怕格式再烂,只要忒阳升起落下,工夫还是能算的。 最终,别忘了设置公式时的单元格引用。别反复去改 A2、B2,直接写死公式,要么在输入前把 A1 的引用改成 `=$A$1`,这样你不用每次按回车都要去复制单元格,效率直接翻倍。并且,要是数据范围变了,别指望 Excel 自己自动调整公式的起始行,手动指定起点最稳。 总结一下,算年龄的核心就三步:先选对日期,再把 `DAYS` 的截断值定好(一般周岁是 1,整数岁是 2),最终用数组公式强制触发一次计算。别再被 Excel 那个“自动填充”的假象骗了,不懂数组公式的话,哪怕你把公式写对,结局每次一刷新还是错的。多练几次,你会发现 Excel 不只是是表格工具,它能帮你快速把枯燥的数字变成有血有肉的信息。
要是实在懵了,不如先用 `DATEDIF`(它是更古老的函数,专门干这个的)再试一次,它的逻辑分得更细,一眼就能看出到底是算“整年”还是“几年多几天”。别看 `DATEDIF` 在旧版本 Excel 里没那么多更新,但在处理这种工夫跨度庞大的难题时,它依然是个不会出错的好帮手。