|
楼主 |
发表于 2019-12-15 23:30
|
显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 maozhe 于 2019-12-18 10:39 编辑
该函数就两个参数,一个是身份证号码,一个是你想提取的身份信息,功能还有很补不完善的地方,以后还会努力改进!本次修改了默认选项,就是说你仅仅一个参数也行,自动返回出生日期,格式为“0000-00-00”,添加出生年月日选项,代码如下:
- '身份证信息函数
- '第一个参数,目标单元格!
- '第二个参数选项:出生日期:csrq,出生年月日:csnyr,出生年月:csny,出生年:csn,年龄:nl,性别:xb,无参数,检查身份证长度是否有误!
- Function sfz(rng As Range, Optional S As String = "csrq") As String
- If Len(rng) <> 18 Then
- sfz = "SFZ长度错误"
- ElseIf (Mid(rng, 11, 2) > 12) Or (Mid(rng, 13, 2) > 31) Then
- sfz = "SFZ日期错误"
- ElseIf S = "csrq" Then
- sfz = Application.Text(Mid(rng, 7, 8), "0000-00-00")
- ElseIf S = "csnyr" Then
- sfz = Application.Text(Mid(rng, 7, 8), "0000年00月00日")
- ElseIf S = "csny" Then
- sfz = Application.Text(Mid(rng, 7, 6), "0000年00月")
- ElseIf S = "csn" Then
- sfz = Application.Text(Mid(rng, 7, 4), "0000年")
- ElseIf S = "nl" Then
- sfz = Year(Now()) - (19 & Mid(rng, Len(rng) / 2, 2)) & "岁"
- ElseIf S = "xb" Then
- sfz = IIf(Mid(rng, 17, 1) Mod 2, "男", "女")
- Else
- sfz = "参数错误"
- End If
- End Function
复制代码
|
评分
-
2
查看全部评分
-
|