上能玩转函数公式,下能调戏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,所以该身份证是真的。
赶紧拿出自己的身份证验证下吧! 作者:犀利土豆哥 |
|