提取身份证的性别、出生年月日的VBA
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
提取身份证的出生年月日的VBA
方法一:使用VBA建立自定义函数
在EXCEL中建立模块,输入下列代码,则在单元格中就可以使用自定义函数XB(),则就可以根据身份份号码得出性别,使用自定义函数CS(),则就可以根据身份份号码得出出生日期。
'根据身份证号码求出生日期与性别
Function xb(Number)
If Len(Number) = 15 Then
se = Val(Right(Number, 1))
Select Case se
Case 0, 2, 4, 6, 8
xb = "女"
Case 1, 3, 5, 7, 9
xb = "男"
End Select
End If
If Len(Number) = 18 Then
se = Val(Mid(Number, 17, 1))
Select Case se
Case 0, 2, 4, 6, 8
xb = "女"
Case 1, 3, 5, 7, 9
xb = "男"
End Select
End If
End Function
Function cs(Number) As Date
If Len(Number) = 15 Then cs = "19" + Mid(Number, 7, 2) + "-" + Mid(Number, 9, 2) + "-" + Mid(Number, 11, 2)
If Len(Number) = 18 Then cs = Mid(Number, 7, 4) + "-" + Mid(Number, 11, 2) + "-" + Mid(Number, 13, 2)
End Function
方法二:使用函数
=IF(LEN(C2)=15,concatenate("19",MID(C2,7,2),"-",MID(C2,9,2),"-",MID(C 2,11,2)),if(len(c2)<>18,"身份证错误",concatenate(MID(C2,7,4),"-",MID(C2,11,2),"-",MID(C2,13,2)))
或
=IF(LEN(C2)=15,"19"&MID(C2,7,2)&"-"&MID(C2,9,2)&"-"&MID(C2,11,2),I F(LEN(C2)<>18,"身份证错误",MID(C2,7,4)&"-"&MID(C2,11,2)&"-"&MID(C2,13,2)))
“性别”的方法与出生年月大同小异。
=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)<>0,"男","女"),IF(LEN(C2)=18,IF(MOD(MID(C2,17,1),2)<>0,"男","女"),""))
或
=IF(LEN(C2)=15,IF(MOD(VALUE(RIGHT(C2,3)),2)=0,"女","男"),IF(LEN(C2)=18,IF(MOD(VALUE(MID(C2,15,3)),2)=0,"女","男"),""))
说明:函数concatenater()的功能:
将两个或多个文本字符串合并为一个文本字符串。
语法:CONCATENATE (text1,text2,...)
Text1, text2, ... 为2 到255 个将要合并成单个文本项的文本项。
这些文本项可以为文本字符串、数字或对单个单元格的引用。
注解:您也可使用连接符号(&) 计算运算符代替CONCATENATE 函数来连接文本项。例如=A1&B1 与=CONCATENATE(A1,B1) 返回相同的值。