上能玩转函数公式,下能调戏vba代码,左能做得村里的主,右能修得了手机!
不要迷恋哥,哥只是个传说!
传说中的土豆哥除了不会生孩子(娃从他肚中出来
),其他啥都会!言归正传,一起来看看今天土豆哥给咱带啥好玩的了!
话说土豆哥有个好差事—村官,本是兼职,做着做着成本职工作了。
因上了个新系统,土豆哥需要将手里好几个村的数据都导入进去,结果好多都显示“公民身份证号码格式错误!”
没办法,土豆哥找来户口本核对,原来是一开始录数据的妹子将身份证号码录错了,导致数据无法导进系统。
好几个村几十万的数据,如何验证身份证的真假,这能难倒咱们的土豆哥吗?函数公式、自定义函数齐上阵,就是这么犀利!
简化模拟数据如下:
身份证号码的最后一位就是校验码,是根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,根据精密的计算公式计算出来的。
最后一位数字校验码是由前17位唯一确定的,随便乱填的身份证号就不能通过校验。
身份证号码校验码的计算:
(1)17位数字本体码加权之和
S = SUM(Ai * Wi) i = 0,1,2,...,16即17位数字
Ai:表示第i位置上的身份证号码数字的值
Wi:表示第i位置上的加权因子
即:Wi数位:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2
(2)17位数字值加权之和取模
T= S MOD 11
(3)取模得到对应的数位值:0 1 2 3 4 5 6 7 8 9 10,即11位
VerTi 校验码值:1 0 X 9 8 7 6 5 4 3 2 ,即11位 一一对应
方法一:函数公式
公式:
=MID('10X98765432',MOD(SUMPRODUCT(MID(A2,ROW($1:$17),1)*2^(18-ROW($1:$17))),11) 1,1)=RIGHT(A2)
算法思路解析:
比如身份证号码:510122200001116815
(1)算出加权之和
(2)17位数字值加权之和取模
(3)根据余数与校验码对应
余数7对应的校验码是5,该身份证号最后一位数是5,所以该身份证是真的。
方法二:自定义函数
赶紧拿出自己的身份证验证下吧!
作者:犀利土豆哥
联系客服