每个人的身份证号码都是独一无二,由六位数字地址码+八位数字出生日期码+三位数字顺序码+最后一位是数字校验码组成,而最后一个数字校验码是前面的数字按一定规则计算出来,手工计算很麻烦,利用Excel函数有些复杂,用ExcelVBA轻松可以解决。
前期准备工作(包括相关工具或所使用的原料等)
Excel 2010详细的操作方法或具体步骤
打开一张Excel表格或者新建一张Excel表格,以新建一张Excel表格为例,新建并打开Excel表格。


进行初始数据的编辑,可以去网上找测试用的身份证号码,这些只是满足身份证的计算规则。然后进行代码的编辑,如果正确就在F或者G列相应打勾,否则就打叉。

用快捷键Alt + F11 打开Visual Basic编辑器,或者找到到菜单栏——开发工具——Visual Basic,如果没有开发工具这一项可以点击菜单栏文件——选项——
自定义功能区进行添加。

首先点击菜单: 插入——模块
代码编辑分两大部分:身份证是否正确和性别是否正确
输入以下代码
Sub 身份验证()
Dim arr1(), arr2(), t, leftString, s
arr1=Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) '系数
arr2=Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2") '对应的结果
s=0
For Each Rng In Range("d2", Cells(Rows.Count, "d").End(xlUp))
s=0
If Len(Rng.Text)=18 Then
For i=1 To 17
t=Mid(Rng.Text, i, 1) '取出每位数
s=s + t * arr1(i - 1) '求和
Next i
s=s Mod 11 '取余数
If arr2(s)=Mid(Rng.Text, 18, 1) Then '判断是否与最后一位相等
Range("g" & Rng.Row).Value="√"
Else
Range("g" & Rng.Row).Value="×"
Range("f" & Rng.Row).Value="×"
End If
Else
Range("g" & Rng.Row).Value="×"
Range("f" & Rng.Row).Value="×" '这是新加的一行,以前有点错误
End If
leftString=Mid(Rng.Text, Len(Rng.Text) - 1, 1)
If (leftString Mod 2)=1 Then
If Range("e" & Rng.Row).Value="男" Then
Range("f" & Rng.Row).Value="√"
Else
Range("f" & Rng.Row).Value="×"
End If
Else
If Range("e" & Rng.Row).Value="女" Then
Range("f" & Rng.Row).Value="√"
Else
Range("f" & Rng.Row).Value="×"
End If
End If
Next
End Sub



开始进行测试,按F8逐步进行。


为方便向表格中添加按钮控件,在菜单栏——开发工具——插入——表单——按钮控件,鼠标会变成一个十字形左键拖动鼠标指定适宜的大小然后自动弹出宏的对话框进行指定宏添加后,把按钮名字改成“身份证验证”只需点击按钮就可以判断真伪。



点击文件——另存为———启用宏的工作簿,然后改一下名称和路径,其他可能不能保存代码

注意事项
身份证是字符型,不可以是科学计算法的数字,在数字前加““”代码是对应单元格,如果目标在其他单元格需要改相应的代码经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本教程系本人依照真实经历原创,未经许可,谢绝转载。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
