一段简单的VBA代码,让你自如操作Excel,成为职场达人!
抛砖引玉的场景需求:做人事工作的职场人经常需要从员工身份证号码中提取性别信息。如果熟悉Excel函数,那么可以综合使用Mid和Mod函数提取性别信息。在Excel数据自动化应用中又如何获取呢?下面针对18位身份证号码提供一个常用的提取思路。
见下面代码示例:(本示例中的身份证都采用国家1999年制定的身份证号码标准, 即18位身份证)
表格示例
代码示例
在标准模块中加入如下代码即可实现上面的演示功能。
Sub 批量提取身份证性别()
Dim s As Byte
Dim str As String
For n = 2 To Range("B65536").End(xlUp).Row
'将单元格值赋给str变量
str = CStr(Cells(n, "B"))
'判断身份证号长度是否正确,不正确则退出程序!
If Len(str) = 18 Then
s = Mid(str, 17, 1) '提取代表性别的数字
Cells(n, "C") = IIf(Int(s / 2) = s / 2, "女", "男")
End If
Next
End Sub
如果日常工作中需要经常使用,那么我们可以做成一个通用的VBA函数,这样在工作表或者其它VBA程序中都能调用。
Function GetGender(str As String)
Dim s As Byte
'判断身份证号长度是否正确,不正确则退出程序!
If Len(str) <> 18 Then MsgBox "无效身份证号码!": Exit Function
s = Mid(str, 17, 1) '提取代表性别的数字
Dim sex As String
sex = IIf(s Mod 2 = 0, "女", "男")
GetGender = sex
End Function
Sub 显示性别()
MsgBox GetGender("340101200505181764")
End Sub
有需要的同学请保存上面代码,也可以使用《神奇的VBA》插件,这些代码在插件中也有收录。复制上面代码运行一下吧。
更多Excel VBA编程知识(职场牛人必备秘技),请下载安装使用北上广深苏杭重津等一线职场牛人必备的参考和学习工具《神奇的VBA》插件,一款嵌入进Excel Ribbon界面,打开任意Excel工作簿就能随时查阅学习VBA编程的Excel 插件。
联系客服