一、任务需求:根据员工信息表中的身份证号码,精确计算每位员工的实际年龄。
二、任务难点:
1、数据量大,无法单个员工计算。
2、需要计算的是员工实际的年龄(即30岁差一天也只能算是29岁),不是虚岁。
三、解决思路:
1、身份证内包含出生年月,可以提取出来。
2、用当前的时间减去出生年月可以得出实际的年龄。
四、具体方法:
(一)提取出生年月日
身份证号码的第7-14位是个人的出生年月日,利用MID()函数可以把出生年月日从身份证号码里提取出来。
MID()函数解析:
作用:从字符串中提取一定长度的字符串。
参数解析:
1.Text:指定所要提取的字符串。
2.Star_num:准备提取的第一个字符的位置,按从左到右的顺序由1开始计算。
3.Num_chars:指定所要提取的字符串的长度。
本例在“提取出生年月日”列下第一行(C2)单元格中输入公式=MID(B2,7,8),然后向下填充即可将所有人的出生年月日从身份证号码中提取出来。(B2是商鞅的身份证号码,从第7位开始,提取8位)
(二)转化为日期格式
由MID()函数提取出来的出生年月日是字符串型数据,需要利用TEXT()函数转为Excel能识别的日期格式。
TEXT()函数解析:
作用:将数值转换为按指定数字格式。
参数解析:
1.Value:要转化的数据。
2.Format_text:想要转化的数值格式。
如下为TEXT()函数常用的一些格式:
本例在“转化为日期格式”列下第一行(D2)单元格内添加公式=TEXT(C2,"0000-00-00"),然后向下填充即可将“出生年月日”转化为日期格式。(C2是商鞅的出身年月日,"0000-00-00"是日期的格式)
(三)获取当前系统日期
为增加表格的灵活性,使用TODAY()函数获取当前系统日期。
TODAY()函数解析:该函数是没有参数的可以直接使用。
本例在“获取当前系统日期”列下第一行(E2)单元格内添加公式= TODAY(),然后向下填充即可获取到当前系统日期。
(四)计算实际年龄
实际年龄等于当前系统时间和出身时间的年份差,利用DATEDIF()函数可以计算出两个日期之间的年份差。
DATEDIF(start_date,end_date,unit)函数解析:
作用:Excel隐藏函数,插入公式里面没有。可以返回两个日期之间的年\月\日间隔数,常使用DATEDIF()函数计算两日期之差。
参数解析:
1.Start_date:起始日期(必须是1900年之后)
2.End_date:结束日期(结束日期必须大于起始日期)
3.Unit:返回的日期类型,即要计算的是年、月、日中的哪一个的差,具体类型如下:
“Y”计算年数差;
“M”计算月数差;
“D”计算天数差。
本例在“年龄”列第一个单元格中输入公式:=DATEDIF(D2,E2,"Y"),然后向下填充即可计算出实际的年龄。(D2是商鞅的出生年月日,E2是当前系统日期,“Y”表示计算年数差)
五、拓展创新
在实际中,以上方法步骤过多,不太方便。可以将所有的公式合并为一条公式:=DATEDIF(TEXT(MID(B2,7,8),"0000-00-00"),TODAY(),"Y"),迅速计算出实际的年龄。
以上就是根据身份证号码精准计算实际年龄的方法,总结如下:
1、利用MID()函数从身份证号码中提取出生年月日。
2、利用TEXT()函数把提取的出生年月日转为日期格式。
3、利用TODAY()函数获取到当前系统日期。
4、利用DATEDIF()函数计算出当前系统日期和出生日期的年份差(即实际年龄)。
该计算思路和公式能让工作效率大大提高,把困难的问题变得简单轻松,你学“废”了吗?
我是今日Excel与编程,想了解更多的Excel与编程知识请关注我
标签: c98