判断身份证号码是否正确的公式(表格中如何筛选出错误的身份证号码)
昨天的文章跟大家分享了excel中几种处理身份证号的方法,有小伙伴评论留言问“怎么计算身份证号是否有效”,小编研究了一下,发现这道题很深,值得深究!
先跟大家分享一个小编百度来的公式吧!
公式:
=IF(TEXT(IF(MOD(12-(MID(B2,1,1)*7 MID(B2,2,1)*9 MID(B2,3,1)*10 MID(B2,4,1)*5 MID(B2,5,1)*8 MID(B2,6,1)*4 MID(B2,7,1)*2 MID(B2,8,1)*1 MID(B2,9,1)*6 MID(B2,10,1)*3 MID(B2,11,1)*7 MID(B2,12,1)*9 MID(B2,13,1)*10 MID(B2,14,1)*5 MID(B2,15,1)*8 MID(B2,16,1)*4 MID(B2,17,1)*2),11)=10,"X",MOD(12-(MID(B2,1,1)*7 MID(B2,2,1)*9 MID(B2,3,1)*10 MID(B2,4,1)*5 MID(B2,5,1)*8 MID(B2,6,1)*4 MID(B2,7,1)*2 MID(B2,8,1)*1 MID(B2,9,1)*6 MID(B2,10,1)*3 MID(B2,11,1)*7 MID(B2,12,1)*9 MID(B2,13,1)*10 MID(B2,14,1)*5 MID(B2,15,1)*8 MID(B2,16,1)*4 MID(B2,17,1)*2),11)),0)=MID(B2,18,1),"对","错")
小编研究了一下,这个判断方法不错,缺点是公式太长,而且小编发现这个公式存在局限性。如上图,姓名E的身份证号写成了19位(中间多出一个数),这个公式会判定它是错的,而当姓名F的身份证号写成了19位(最后多出了一个数),这个公式却依旧判定它是对的;并且当身份证号为空或者位数不对时,这个公式也只是显示计算错误“#VALUE!”,而无法得知错在哪儿。
所以小编深入研究了一下,得出另一个公式。
公式:
=IF(LEN(B2)=0,"空",IF(LEN(B2)=15,"老号",IF(LEN(B2)<>18,"位数不对",IF(CHOOSE(MOD(SUM(MID(B2,1,1)*7 MID(B2,2,1)*9 MID(B2,3,1)*10 MID(B2,4,1)*5 MID(B2,5,1)*8 MID(B2,6,1)*4 MID(B2,7,1)*2 MID(B2,8,1)*1 MID(B2,9,1)*6 MID(B2,10,1)*3 MID(B2,11,1)*7 MID(B2,12,1)*9 MID(B2,13,1)*10 MID(B2,14,1)*5 MID(B2,15,1)*8 MID(B2,16,1)*4 MID(B2,17,1)*2),11) 1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RIGHT(B2,1)*1),RIGHT(B2,1)*1,"X"),"正确","错误"))))
如上图,此公式可以清楚地告诉我们它是老号、空还是位数不对。
这个公式虽然依旧有点长,但有一定的改善,小伙伴们如果有更好的判断方法,欢迎一同来探讨哦!