Excel – 根据身份证号码计算年龄,生日没过的减去一岁

文摘   科技   2024-11-16 19:00   上海  

公众号平台最新的推送规则对技术类文章不太友善,如果不想错过干货,请务必 “设为星标”哦!!!


点击上方蓝字 --> 点击“...”--> 选择“设为星标


大家去医院看病的时候,不知道有没有注意过,医生打印出来的单据上,年龄是生物学上的真正年龄(当然,希望大家都身体健康,不要生病)。


这是什么意思呢?举个极端的例子,两个人的出生年月日可能只相差一天,但显示的年龄却差了一岁。


为何如此?因为其中一个人的生日还没有到,就被视为尚未满下一岁,因此会自动扣除一岁。


在 Excel 中是否能按这个规则计算出年龄呢?


案例:


根据下图中 A 列的身份证号码,在 C 列提取出生日期,在 D 列计算出实际年龄,如果生日还没到,则自动减去一岁。


效果如下图 2 所示。


解决方案:


1. 在 C2 单元格中输入以下公式 --> 下拉复制公式:

=TEXT(MID(A2,7,8),"0-00-00")


公式释义:

  • MID(A2,7,8):从 A2 单元格字符串的第 7 位开始,一共提取 8 位字符串

  • =TEXT(...,"0-00-00"):将 MID 函数提取的字符串转换日期的样子;但此时的结果仅仅是看上去像日期,还不是真正的日期格式,尚且不能参与后续的计算


有关 text 函数的详解,请参阅 Excel函数(七) –用Text看我格式72变


2. 在 B2 单元格中输入以下公式 --> 下拉复制公式:

=DATEDIF(--C2,TODAY(),"y")


公式释义:

  • --C2:

    • 刚才已经说过,text 提取出来的字符不是真正的日期格式,所以需要在 C2 前面添加两个减号,这叫做减负运算,即负负得正,从而将文本格式的数值变成真正的日期格式;

    • 如果将“--”替换成“1*”,也可以实现同样的效果

  • TODAY():今天的日期

  • DATEDIF(--C2,TODAY(),"y"):

    • 计算出生日期和今天日期之间的差值,返回整年数;

    • 第一个参数是开始日期,第二个参数是结束日期;

    • "y"表示时间段中的整年数


有关公式中“--”的含义和 datedif 函数的详解,请分别参阅以下推文:


转发、点赞、在看也是爱!

Excel学习世界
你遇到的所有 Excel 坑,我都帮你趟过了。
 最新文章