轻松提取身份证中的信息
IT商界
年终到了,人事部门需要整理人事档案,负责这项工作的小张遇到了一个问题:他要把单位每个员工的基本资料输进电脑,如身份证号码、性别和生日等信息,因为每个人的身份证号码本身就包含了出生日期和性别,小张觉得如果能让Excel根据身份证号码自动生成出生日期和性别就方便多了。经过摸索,小张用Excel函数轻松解决了这个问题,下面我们就来看看他是怎么做的。
一、明确号码的含义
首先我们必须明确身份证号码各位数字的含义。老身份证号码是15位,最后一位数字是性别代码,奇数代表男性,偶数为女性;新的18位身份证号码的性别判别位为倒数第二位数字,仍然是奇数代表男性。
新(老)身份证从第七位开始的连续八位(六位)代表出生年月日。例如身份证号码为******197809261915,则出生年月日对应为1978年9月26日,倒数第二位为1,奇数代表男性。
二、提取有用的信息
明确了身份证数字的含义,下面就可以利用Excel函数进行提取工作了。
假设在表格A列中已经输入身份证号码,要在B、C、D三列依次提取出生年、月、日,在E列提取性别。那么在Excel的第一行各列中应该输入以下公式:
1.B1中输入“=IF(LEN(A1)=15,19&MID(A1,7,2)&"年",MID(A1,7,4)&"年")”。
说明:如果为15位,则取第7、8两位且前面加“19”;否则直接取第7到10位。
2.C1中输入“=IF(LEN(A1)=15,MID(A1,9,2)&"月",MID(A1,11,2)&"月")”。
说明:如果为15位,则取第9、10位;否则取第11、12位。
3.D1中输入“=IF(LEN(A1)=15,MID(A1,11,2)&"日",MID(A1,13,2)&"日")”。
4.E1中输入“=IF(INT((IF(LEN(A1)=15,RIGHT(A1),MID(A1,17,1)))/2)=(IF(LEN(A1)=15,RIGHT(A1),MID(A1,17,1)))/2,"女","男")”。
说明:若性别判别位除以2后取整的值等于判别位除以2,则表示性别为女性,否则为男性。
至此,相应信息的提取工作就基本完成了,接下来我们利用Excel的拖放功能依次填充各个单元格即可。
三、注意事项
1.应对自动变零问题
对于新的18位身份证号码,,在Excel输入时经常会出现输入数据最后三位被擅自更改为0的情况。遇到这种情况,我们只须把该列的数据格式设为“文本”,这样以后输入的数字就不会被更改了。具体做法是:选定A列,选择菜单栏上的“格式→单元格”命令,进入“数字”选项卡,在“分类”栏中选择“文本”项。
2.应对输入位数出错问题
由于身份证位数多,输入过程中很难保证完全正确,多输入一位或者少输入一位都很难发现。如果出现这样的情况,那么后面的资料提取也就会变得不准确了。所以,小张又增加了一列(假设为F列)作为判别输入位数对错的标志。
在F列的第一行中输入“=IF(OR((LEN(A1)=18),(LEN(A1)=15)),TRUE,FALSE)”。这样,若输入位数正确,则显示“TRUE”,如果输入的位数不是15位或者18位则显示“FALSE”。
利用Excel函数,也可以对身份证中包含的省份、地区等信息进行提取,这里就不赘述了,感兴趣的朋友可以自己试试。