超实用Excel VBA工具箱4-验证身份证号码有效性

        身份证信息处理是我们将遇到的需求,其中一个就是对于身份证号码有效性的验证。有一次我妻子学校让班主任核对学生提交的家庭成员身份证信息的准确性。按之前的方式,全班几十个学生,挨个家长打电话,一遍下来半天也就没了。这还不算电话打不通的,打通了身份证号记不住的。于是我就给她做了身份证号有效性识别的功能。先程序核对一遍,剩下的只是确认身份证证号无效的,这样效率一下就提高了几十倍。

 如何识别身份证号码是否有效?

身份证号码的最后一位是校验码,校验的具体公式和详细要求大家可以自行百度。不求甚解的朋友也完全可以忽略具体规则。直接Copy我的代码就行。

简单的来说就是将前17为分别乘以7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2,然后将乘积求和再除以11,余数可能有0 1 2 3 4 5 6 7 8 9 10,分别应该对应身份证最后一位的1 0 X 9 8 7 6 5 4 3 2。如果能够对应,身份证号码就是对的,如果不对应那就肯定是写错了。

创建身份证号码校验函数

第一步我们需要创建一个身份证号码的校验函数,这样方便我们批量判断身份证有效时进行调用。

Function IDcheck(ID As String) '判断身份证号是否正确的自定义函数
    Dim intSum, i As Long
    Dim strVerify, strEnd As String
    intSum = 0
    If Len(ID) = 18 Then '在这里,为了使代码看着简洁,我们仅考虑18位身份证号,15位的暂不考虑
        For i = 1 To 17
            intSum = intSum + Val(Mid(ID, 18 - i, 1)) * (2 ^ i Mod 11) '对身份证号前17位分别乘以系数,并求和
        Next
        strVerify = Mid("10X98765432", (intSum Mod 11) + 1, 1) '计算检验码
        strEnd = UCase(Right(ID, 1)) '获取身份证最后1位
        If strEnd = strVerify Then '如果计算的校验码与最后一位相同则为有效的身份证号
            IDcheck = "正确"
        Else
            IDcheck = "无效的身份证号"
        End If
    End If
End Function

有了自定义函数,我们就已经可以直接在工作表中调用函数了。如果想更方便的使用可以构造一个窗体。也可以直接从的第一篇文章《超实用Excel VBA工具箱0-零基础学代码其实很简单》中下载使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值