Excel校验身份证号正确与否的常用公式

身份证号最初只有十五位,1-6位为地区码,7-8位为出生年份的后两位,9-12位为出生月和出生日,13-14位为上户口的派出所代码,第15位为性别码。这种身份证号的编码方式本身存在问题,因为随着居民生活水平的提高,大家的寿命也越来越长,相应的,过百岁的老人也会越来越多。身份证号中只存在出生年的后两位,容易造成混淆,所以从1997年开始,身份证号提升为18位编码,出生年由原先的后两位调整为完整年份,并在身份证号最后添加校验位,其计算公式为:

【[1]*7+[2]*9+[3]*10+[4]*5+[5]*8+[6]*4+[7]*2+[8]*1+[9]*6+[10]*3+[11]*7+[12]*9+[13]*10+[14]*5+[15]*8+[16]*4+[17]*2】

其中,中括号中的数字代表身份证号对应位置上的数字,乘号“*”后的数字为系数。计算后得到的乘积除以11得到的余数经过换算关系就是最后的校验位,换算关系如下:

0-1-2-3-4-5-6-7-8-9-10
1-0-X-9-8-7-6-5-4-3-2

以上为科普部分。下方为正题

=============================================================================

先前经手过一批身份资料,用于制作资格证。但是各个企业上报的资料难免存在纰漏,持证人在确认过程中也粗心大意,没看出来。虽然有身份证的复印件,但是人工审核费时费力,时间长了眼都花了,有错误也就看不出了。在这里,幸好有了校验位,在Excel中通过计算校验位并进行匹配即可知道身份证号是否存在错误。网上随意摘抄了一个,基本没有错误:

=IF(LOOKUP((LEFT(E2,1)*7+MID(E2,2,1)*9+MID(E2,3,1)*10+MID(E2,4,1)*5+MID(E2,5,1)*8+MID(E2,6,1)*4+MID(E2,7,1)*2+MID(E2,8,1)+MID(E2,9,1)*6+MID(E2,10,1)*3+MID(E2,11,1)*7+MID(E2,12,1)*9+MID(E2,13,1)*10+MID(E2,14,1)*5+MID(E2,15,1)*8+MID(E2,16,1)*4+MID(E2,17,1)*2)-ROUNDDOWN((LEFT(E2,1)*7+MID(E2,2,1)*9+MID(E2,3,1)*10+MID(E2,4,1)*5+MID(E2,5,1)*8+MID(E2,6,1)*4+MID(E2,7,1)*2+MID(E2,8,1)+MID(E2,9,1)*6+MID(E2,10,1)*3+MID(E2,11,1)*7+MID(E2,12,1)*9+MID(E2,13,1)*10+MID(E2,14,1)*5+MID(E2,15,1)*8+MID(E2,16,1)*4+MID(E2,17,1)*2)/11,0)*11,{0,1,2,3,4,5,6,7,8,9,10},{"1","0","x","9","8","7","6","5","4","3","2"})=RIGHT(E2,1),"OK","Wrong")

使用中仅需将上述公式粘贴到工作簿(Sheet)的某一单元格中,然后将公式中的“A1”替换为需要校验的身份证号所在的单元格,回车即可。替换方法可以选中“E2”然后点击目标单元格即可完成替换,但是需要逐个替换。也可事先在文本编辑器中将上式中的“E2”批量替换为目标单元格后再进行粘贴。如果有大量数据需要校验,只需按住已经显示了校验结果的单元格右下方的小黑点并向下方拖动,像下图这样


P.S. 想着把<pre>标签换成<textarea>,这样就可以通过JavaScript来单击全选。但是不知道什么原因,更改完成后会出现符号转换,半角双引号会变成全角导致Excel报错。无奈,改了回来。

《Excel校验身份证号正确与否的常用公式》上有1条评论

  1. 本来打算将公式放入<textarea>标签中,通过JavaScript可以单击全选。结果放入<textarea>之后发现部分双引号由半角自动转为了全角,导致公式出错,无法使用。

评论已关闭。