利用Excel函数公式 验证18位身份证号码对错

从上图的编辑栏中可以看到公式(默认的全部都是二代18位的身份证号码)

=IF(B2='','',IF(MID('10X98765432',MOD(SUMPRODUCT(MID(B2,ROW($1:$17),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11)+1,1)=RIGHT(B2),'正确','错误'))

那么这个公式表达的是什么意思呢?其实呀,我们身份证号码的编制,是遵循了一定规则的,并不是按顺序随便取的。从倒数第二位可以判断性别一样,这就是其中一个编制规则。只是今天我们要说的这个规则,不像判断性别那样普及,不是每个人都知道的。

二代身份证是由18位数字组成的,它的编制有一个规律:将前17位数字进行一种特定的运算,这个运算的结果必定等于第18位数字。那到底是什么样的特定运算呢?

1.身份证号码有一组固定的17位系数,分别对应身份证号码的前17位数字。这组固定的系数是:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。(别问我是怎么知道的,我网上查的。也别问为什么偏偏是这17位,而不是其他的,因为就是这样定下的,是固定的,详情网上可以查到。)

2.将该系数分别与身份证号码的前17位数字相乘,再把17个相乘的结果相加。

3.用相加的结果除以11,看余数是多少,再给它加上1,余数+1。

4.身份证号码还有一组固定的11位校验码:1、0、X、9、8、7、6、5、4、3、2。(与上面所说的系数一样,也是固定的。)

5.通过前三步的计算,得出的是几,就取第四步中校验码的第几位。所取出的校验码,与身份证号码的第18位做比较,如果相等,则说明符合校验规则,号码输入正确。否则,号码输入错误。

而这个公式,只是使用函数将以上的计算规则翻译了出来,所以学习这个公式,需要两点,第一,要认识这些函数;第二,要知道这个规则。如果不了解这个规则,光认识函数,也是搞不懂的。

例如, 370125197608157443,前面17位数字分别乘以17位固定的系数,然后将17个乘积加起来,得出结果是383

然后使用MOD函数求余数,383除以11的余数是9

下一步就是对照这个余数对应1、0、X、9、8、7、6、5、4、3、2这一组校验码的位数了,余数是9,感觉应该是对应第9位,但并不是,因为除以11的余数只可能是0~10这11个数字,但是并没有第0位这种说法啊,我们需要的是第1位到第11位,所以要在余数后面加1之后,再去对照。9+1=10,校验码的第十位是3, 正好等于370125197608157443这组身份证号码的最后一位,所以是正确的,没有输入错误。

大家可以自行验证,欢乐的很

图一中的红色删除线,是使用的条件格式

THE END