以往在Excel中输入身份证号码时,总要反复核对,担心出错。现在好了,电脑帮你检查。如果身份证号码输入错误,Excel会弹出信息框及时提醒你。
1、把以下代码粘贴到模块中。
Function vsm(olds) As String
'计算身份证校验码,olds是前18位身份证号码。
'如果前17位号码有效,返回校验码;否则,返回1个长度空格。
'根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,
'身份证号码的最后一位是校验码,算法是这样:
'把前17位的每一个数字和一串加权因子相乘,计算这些乘积的和(S),
'加权因子是自右向左,分别是2,2^2,2^3,......2^17,大于10的就模11。
'用这些乘积的和,再模11得到的余数按下述规定得出校验码:
'余 数:0-1-2-3-4-5-6-7-8-9-10
'校验码:1-0-X-9-8-7-6-5-4-3-2
'注:校验码X是罗马数字10,但为书写方便,本代码中用的是英文字母X。
If Len(olds) = 18 Then
Dim i, w, s, cs As Integer
w = 1
s = 0
For i = 1 To 17
w = (w * 2) Mod 11
cs = Asc(Mid(olds, 18 - i, 1)) - 48
If cs >= 0 And cs < 10 Then
s = s + cs * w
Else
'vsm = "第" & (18 - i) & "位不是数字!"
vsm = " "
i = 20
End If
Next
If i = 18 Then
s = (12 - s Mod 11) Mod 11
vsm = LTrim(Str(s))
If s = 10 Then vsm = "X"
End If
Else
'vsm = "位数不对!"
vsm = " "
End If
End Function
2、假设身份证号码在C4单元格开始的列中,D列作为辅助列计算校验码。在D4单元格中输入公式:=vsm(C4),下拉公式;选定C4:C1000单元格区域(根据需要),选择菜单:数据--有效性--在“设置”选项卡的“允许”栏选择“自定义”,“公式”栏输入:=AND(RIGHT(C4,1)=D4,RIGHT(C4,1)<>" ")--选择“出错警告”选项卡,在“标题”栏输入“输入错误”,在“错误信息”栏输入“请输入18位有效身份证号码!”--确定,然后把D列隐藏。
当然,如果只要计算校验码,也可不使用自定义函数,直接在D4单元格中输入数组公式:=MID("10X98765432",1+MOD(SUM(MID(C4,ROW($1:$17),1)*2^(18-ROW($1:$17))),11),1),(按Ctrl+Shift+Enter结束),然后下拉公式。
联系客服