欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...

发布时间:2024/7/23 编程问答 64 豆豆
生活随笔 收集整理的这篇文章主要介绍了 语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物... 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

观看视频更直观

我们建立信息表时不仅要输入性别、生日和年龄等信息,往往也需要输入身份证号码,而身份证号码中包含有籍贯、性别、生日和年龄等信息,从身份证号码中提取上述信息可以减少输入工作量,提高工作效率。利用Excel中的内置函数可以完成,但略显烦琐,要用到MID 函数、TEXT函数、、IF函数、ISEVEN函数(或ISODD函数或MOD函数)、DATEDIF函数、TODAY函数,很多人难以灵活使用。

我利用VBA在Excel中自定义了一个IDinfo函数,一个函数就能完成从身份证号码中提取出性别、生日与年龄信息,还自动甄别身份证号码输入正误,特别实用。

一、插入模块并复制粘贴代码

打开Excel后新建一个工作簿,右击"sheet1工作表标签,在弹出的快捷菜单中选择"查看代码"命令,打开VBA窗口,单击"插入"菜单→"模块"命令,插入一个模块,选中其中的"模块1",将下面的代码复制到其中即可。

Public Function IDInfo(strID As String, Optional bType As Byte = 1)

Application.ScreenUpdating = False

Dim i As Byte, s As String

If Len(strID) <> 18 Then

IDInfo = "身份证号码错误"

Exit Function

'若文本长度不等于18,返回"错误"并退出函数

End If

For i = 1 To 17

If Asc(Mid(strID, i, 1)) < 48 Or Asc(Mid(strID, i, 1)) > 57 Then

IDInfo = "身份证号码有误"

Exit Function

'若1至17位不是数字,返回"错误"并退出函数

End If

Next

For i = 1 To 17

a = Val(Mid(strID, i, 1)) '从左至右依次取得各位上的数字

w = (2 ^ (18 - i)) Mod 11 '计算加权因子

k = k + a * w '累计计算加权因子与数字的乘积和

Next i

k = k Mod 11 '求除以11的余数

s = Mid("10X98765432", k + 1, 1)

If s <> Right(strID, 1) Then

IDInfo = "身份证号码错误"

Exit Function

'若身份证号码校验错误,返回"错误"并退出函数

End If

Select Case bType

Case 1 '获取性别

If Val(Mid(strID, 17, 1)) Mod 2 = 0 Then

IDInfo = "女" '偶数性别为女

Else

IDInfo = "男" '奇数性别为男

End If

Case 2 '获取生日

Dim iDate As Date

iDate = WorksheetFunction.Text(Mid(strID, 7, 8), "#-00-00")

IDInfo = Format(iDate, "Long Date")

Case 3 '获取年龄

IDInfo = Format(Now, "yyyy") - Val(Mid(strID, 7, 4))

If Val(Mid(strID, 7, 4)) = 0 Then IDInfo = ""

End Select

End Function

二、IDinfo自定义函数的使用

1、函数语法:IDInfo(strID,[ bType])

strID:必需参数,代表身份证号码或对身份证号码的引用。

bType:可选参数,表示获取信息的类型,1或省略表示获取性别,2表示要获取生日,3表示要获取年龄。

2、使用范例

⑴A列存储身份证号码,其中A2为正确身份证号码,其中均为杜撰的错误身份证号码。

⑵在B2单元格内输入"=IDinfo($A2, COLUMN(A1))",拖曳B2填充柄到D2单元格,再拖曳至所需目标处,如图中D2单元格。注意:为了能正确拖曳复制公式,第1个参数要用混合引用,列锁定行相对;第2个参数使用COLUMN函数也是为了方便拖曳,COLUMN函数返回列的列标,如COLUMN(A1)就是返回1即A列的列标,公式拖曳到C2、D2时,COLUMN(A1)就相应变成了COLUMN(B1)、COLUMN(C1),它们分别返回2和3,如果你不理解COLUMN函数就直接输入参数1、2、3也行,数据较少也不麻烦。

总结

以上是生活随笔为你收集整理的语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。