加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用条件格式检查身份证校验码是否正确的方法

(2011-05-28 22:29:00)
标签:

杂谈

分类: 信息技术




           

    18位身份证校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
          为什么除11,在于计算校验码时的函数。请看下边的函数:
公式如下:
∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 )                    (公式一)
"*" 表示乘号
i--------表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。
a[i]-----表示身份证号码第 i 位上的号码
W[i]-----表示第 i 位上的权值 W[i] = 2^(i-1) mod 11

上述计算方法是从右至左,如果从左至右,第1-17位权重W[i]的计算结果为:

7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

计算公式一 令结果为 R
根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。
R 0 1 2 3 4 5 6 7 8 9 10
C 1 0 X 9 8 7 6 5 4 3 2
由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。

        根据上述校验码计算公式和原理,设置条件格式检查校验码方法如下:

假定身份证在B列(均为18位),检查其校验码是否正确,不正确的用红色字体显示。方法如下:
选中B列,“格式”/“条件格式”,将条件设为:

公式=RIGHT(B1)<>MID("10X98765432",MOD(SUMPRODUCT(MID(B1,ROW($1:$17),1)*MID("0709100508040201060307091005080402",ROW($1:$17)*2-1,2)),11)+1,1)

点“格式”,将字体设为红色即可。

桦南县土龙山中学


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有