谁为李逍遥未嫁:如何快速准确输入身份证号码

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 16:31:18
 

    以往在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结束),然后下拉公式