我们在办理员工工资、申报个税及社保等业务时,常需要处理大量人员基本信息,难免就需要在Excel中通过身份证号码提取年龄、性别及出生日期。我国的居民身份证是国家法定的证明公民个人身份的有效证件,每个人对应一个号码,此号码成为公民身份证号码,号码中包含了丰富的信息,1-2位代表省、自治区、直辖市;3-4位代表地级市、盟、自治州;5、6位是县、县级市、区代码;7-14位代表出生年月;15-16位是顺序号,17位代表性别;18位是校验码。那么利用Excel如何快速高效的从身份证号码中提取出生年月或指定的其他值呢?
一、提取出生日期
(一)公式法
原理是身份证第7至14位代表出生日期(格式为YYYYMMDD)。
公式:=TEXT(MID(身份证单元格,7,8),"00-00-00")
示例:若身份证在A2单元格,则公式为`=TEXT(MID(A2,7,8),""00-00-00"")`,结果格式为“1990-01-01”。
注意:若需直接参与日期计算,可省略TEXT函数,仅用MID提取数字。
解读:
1、函数Mid的作用为:从字符串的指定位置开始返回指定长度的字符;语法结构为:=Mid(字符串,起始位置,字符长度);而身份证号码中的出生年月从第7位开始,长度为8。
2、Text函数的作用为:根据指定的数值格式将数值设置为文本;语法结构为:=Text(数值,格式代码),其中“00-00-00”为日期的格式代码。
3、公式=TEXT(MID(C3,7,8),"00-00-00")中,首先用Mid函数获取C3字符串中从第7位开始,长度为8的字符串,即出生年月的8位数字,然后用Text函数将其设置为“00-00-00”的日期格式。

(二)Ctrl+E智能填充法(需要注意EXCEL版本,比如excel2016就可以)
在第一个目标单元格中输入第一个需要提取的出生年月,如“19650821”。
选定所有目标单元格,包括第一个已经输入内容的单元格。
快捷键Ctrl+E。

(三)Excel分列法
1、复制身份证号码至“出生日期”列。
2、【数据】-【分列】-【固定宽度】-【下一步】。
3、在【数据预览】区单击鼠标左键,选择需要提取字符的开始位置和结束位置,并【下一步】。
4、选择【列数据格式】中的【不导入此列】;并选中需要删除的结尾部分,单击【不导入此列】;选中“出生年月”部分,单击【日期】并【完成】。
注意:在【分列】操作时,一定要将多余的部分删除掉,即【不导入此列】。

二、判断性别
原理是身份证第17位为性别标识(奇数为男,偶数为女)。
公式:=IF(MOD(MID(身份证单元格,17,1),2)=1,"男","女")
mod函数是一个求余函数,其格式为: mod(nExp1,nExp2),即是两个数值表达式作除法运算后的余数。公式中与2相除,能整除余数为0.
例:=IF(MOD(MID(A2,17,1),2),"男","女")(简化版,MOD结果非0即为男)。
替代方案:使用ISEVEN函数`=IF(ISEVEN(MID(A2,17,1)),"女","男")`。
三、计算年龄
原理是基于出生日期与当前日期的差值,推荐使用`DATEDIF`隐藏函数精确计算周岁。
公式:=DATEDIF(出生日期单元格,TODAY(),"Y")
DATEDIF函数可以计算两个日期之间的年数、月数或天数。TODAY函数在Excel中的应用非常广泛,主要用于获取当前日期,并可以与其他日期函数结合使用,进行各种日期计算。
例:若出生日期在B2单元格,则公式为`=DATEDIF(B2,TODAY(),"Y")`。
直接提取身份证计算:=DATEDIF(TEXT(MID(A2,7,8),"00000"),TODAY(),"Y")
写在最后:
需注意的是新旧身份证位数是不同的,比如旧版是15位,此时需分析比如代表出生年月日、性别等数码在哪个位置上,所谓万变不离其宗,依据上述操作原理提取即可。
通过上述方法,可高效批量处理身份证信息。如需进一步优化,可结合数据验证、条件格式等功能实现。


