我们的18位身份证号码其实包含了我们的所在省市县+出生日期+性别,今天就给大家分享如何使用Excel VBA来解析身份证号码的性别、年龄和出生日期。
1.打开我们的Excel VBA编辑器
2.将下列解析身份证号码的VBA代码贴入
Sub sfz()
Dim str, rws, rg As Range
rws = Sheet1.Range("a" & Rows.Count).End(xlUp).Row
For i = 2 To rws
Set rg = Range("a" & i)
'男女判断并赋值
If Mid(rg.Value, 17, 1) Mod 2 = 0 Then
'偶数则为女
Range("b" & i) = "女"
Else
'奇数则为男
Range("b" & i) = "男"
End If
'获取身份证号码中的出生日期,并格式为xxxx年xx月xx日
Range("c" & i) = Format(Mid(rg.Value, 7, 8), "@@@@年@@月@@日")
'计算年龄
'判断月份
If Mid(rg.Value, 11, 2) > Format(Month(Now), "00") Then
'月份大的,也就是还没到月份则年份差值减去一天
Range("d" & i) = DateDiff("yyyy", Range("c" & i), Date) - 1
ElseIf Mid(rg.Value, 11, 2) < Format(Month(Now), "00") Then
'月份小的,也就是已过月份则为年份差值
Range("d" & i) = DateDiff("yyyy", Range("c" & i), Date)
Else
'月份相等的,在比较日期
If Mid(rg.Value, 13, 2) >= Format(Day(Now), "00") Then
'如果日期大的或者当天,也就是还没过生日日期,则年份差减去1天
Range("d" & i) = DateDiff("yyyy", Range("c" & i), Date) - 1
Else
'如果日期小的,说明生日已过,则为年份差值
Range("d" & i) = DateDiff("yyyy", Range("c" & i), Date)
End If
End If
Next
End Sub
3.新建【解析】按钮并绑定宏sfz
4.点击【解析】按钮看看执行效果
瞬间完美解析,厉害吧!
联系客服