分享

Excel之VBA常用功能应用篇:自动识别身份证号码获取性别、年龄、出生日期

 每天学学Excel 2022-02-15

我们的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.点击【解析】按钮看看执行效果

瞬间完美解析,厉害吧!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多