龙空技术网

身份证号码编码规则及校验位校验算法(四)(二)

张喳呼呐617 65

前言:

目前朋友们对“非法字符如何转换”大概比较关注,朋友们都想要知道一些“非法字符如何转换”的相关文章。那么小编同时在网络上收集了一些关于“非法字符如何转换””的相关文章,希望看官们能喜欢,朋友们一起来了解一下吧!

身份证号码编码规则及校验位校验算法(四)

(二)解释:

1、判断身份证号码字符数是否为18位。=IF(LEN(C1)<>18,"位数错误",下一步)。

2、判断是否有非法字符。身份证号码第一位致第十七位不是数字,第十八位为小写“x”均为非法字符。如果身份证号码第一位至第十七位其中有一位不是数字,则公式=ISNUMBER(VALUE(LEFT(C1,17)))返回值为FALSE;如果第十八位为小写“x”,则公式=EXACT(RIGHT(C1,1),"x")的返回值为TRUE。以上两项之一成立,提示“非法字符”。

=IF(OR(ISNUMBER(VALUE(LEFT(C1,17)))=FALSE,EXACT(RIGHT(C1,1),"x")),"非法字符",下一步)。

3、判断身份证号码前2位(省级代码)字符转换为数字后是否在11至65范围内。

= IF(OR(VALUE(LEFT(C1,2))65),"检查前2位",下一步)。

4、判断身份证号码第7至10位(出生年份)字符转换为数字后,是否大于100岁或小于0岁。如果是,提示复核。

= IF(OR(value(MID(C1,7,4))>YEAR(NOW()), YEAR(NOW())-value(MID(C1,7,4))>100),"检查第7至10位",下一步)。

5、判断身份证号码第11至12位(出生月份)字符转换为数字后,是否小于1或大于12。如果是,提示复核。

= IF(OR(VALUE(MID(C1,11,2))12),"检查第11和12位",下一步)。

6、判断身份证号码第13至14位(出生日)字符转换为数字,是否小于1或大于31。如果是,提示复核。

= IF(OR(VALUE(MID(C1,13,2))31),"检查第13和14位",下一步)。

7、计算乘积和(用XJH表示)、乘积和除以11的余数(用YS表示),取余数对应的校验码(用JYM表示)。

XJH=MID(C1,1,1)*7+MID(C1,2,1)*9+MID(C1,3,1)*10+MID(C1,4,1)*5+MID(C1,5,1)*8+MID(C1,6,1)*4+MID(C1,7,1)*2+MID(C1,8,1)*1+MID(C1,9,1)*6+MID(C1,10,1)*3+MID(C1,11,1)*7+MID(C1,12,1)*9+MID(C1,13,1)*10+MID(C1,14,1)*5+MID(C1,15,1)*8+MID(C1,16,1)*4+MID(C1,17,1)*2

YS=MOD(XJH,11)

JYM=CHOOSE(YS +1,1,0,"X",9,8,7,6,5,4,3,2)

8、判断计算出的校验码转换为文本后,是否与身份证号码最后一位相符,即JYM =TEXT(CHOOSE(YS +1,1,0,"X"

标签: #非法字符如何转换