你所不了解的四個(gè)身份證信息提取工具(Excel的vba代碼)

1、Sub 提取身份證出生日期()

? ? ? ? On Error Resume Next

? ? Dim ar, i, ii

? ? Dim tmp

?

? ? If Selection.Areas.Count > 1 Then Exit Sub

? ? If Selection.Cells.Count > Columns.Count Then

? ? ? ? MsgBox "您選擇的區(qū)域過(guò)大!"

? ? ? ? Exit Sub

? ? End If

? ? ar = Selection

? ? Set rngs = Application.InputBox("請(qǐng)選擇存放結(jié)果的區(qū)域", "提示", , , , , , 8)

? ?

? ? '一個(gè)單元格

? ? If Selection.Cells.Count = 1 Then

? ? ? ? tmp = IDBirthday(ar)

? ? ? ? ar = tmp

? ? ? ?

? ? ? ? rngs.Cells(1, 1) = ar

? ? ? ? Exit Sub

? ? End If

? ?

? ? '多個(gè)單元格

? ? Randomize Timer

? ? For i = 1 To UBound(ar)

? ? ? ? For ii = 1 To UBound(ar, 2)

? ? ? ? ? ? tmp = IDBirthday(ar(i, ii))

? ? ? ? ? ? ar(i, ii) = tmp

? ? ? ? Next

? ? Next

? ? rngs.Resize(UBound(ar), UBound(ar, 2)) = ar

End Sub

Function IDBirthday(sid) As String

? ? Dim rlt

? ? Select Case Len(sid)

? ? ? ? Case 15

? ? ? ? ? ? rlt = Format("19" & mid(sid, 7, 6), "0000-00-00")

? ? ? ? Case 18

? ? ? ? ? ? rlt = Format(mid(sid, 7, 8), "0000-00-00")

? ? ? ? Case 0

? ? ? ? ? ? rlt = ""

? ? ? ? Case Else

? ? ? ? ? ? rlt = "無(wú)效"

? ? End Select

? ? IDBirthday = rlt

End Function

2、Sub 提取身份證性別()

? ? ? ? On Error Resume Next

? ? Dim ar, i, ii

? ? Dim tmp

? ? If Selection.Areas.Count > 1 Then Exit Sub

? ? If Selection.Cells.Count > Columns.Count Then

? ? ? ? MsgBox "您選擇的區(qū)域過(guò)大!"

? ? ? ? Exit Sub

? ? End If

? ? ar = Selection

? ? Set rngs = Application.InputBox("請(qǐng)選擇存放結(jié)果的區(qū)域", "提示", , , , , , 8)

? ?

? ? '一個(gè)單元格

? ? If Selection.Cells.Count = 1 Then

? ? ? ? tmp = IDSex(ar)

? ? ? ? ar = tmp

? ? ? ?

? ? ? ? rngs.Cells(1, 1) = ar

? ? ? ? Exit Sub

? ? End If

? ?

? ? '多個(gè)單元格

? ? Randomize Timer

? ? For i = 1 To UBound(ar)

? ? ? ? For ii = 1 To UBound(ar, 2)

? ? ? ? ? ? tmp = IDSex(ar(i, ii))

? ? ? ? ? ? ar(i, ii) = tmp

? ? ? ? Next

? ? Next

? ? rngs.Resize(UBound(ar), UBound(ar, 2)) = ar

End Sub

Function IDSex(sid)

? ? Dim s As String

? ? Select Case Len(sid)

? ? ? ? Case 15

? ? ? ? ? ? s = Right(sid, 1)

? ? ? ? Case 18

? ? ? ? ? ? s = mid(sid, 17, 1)

? ? ? ? Case 0

? ? ? ? ? ? IDSex = ""

? ? ? ? ? ? Exit Function

? ? ? ? Case Else

? ? ? ? ? ? IDSex = "無(wú)效身份證號(hào)"

? ? ? ? ? ? Exit Function

? ? End Select

? ?

? ?

? ? If Int(s / 2) = s / 2 Then? ? ? ? ? ? ? '是否為偶數(shù)

? ? ? ? IDSex = "女"? ? ? ? ? ? ? ? ? ? ? ? ? '如果是,則性別=女

? ? Else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '否則

? ? ? ? IDSex = "男"? ? ? ? ? ? ? ? ? ? ? ? ? '性別=女

? ? End If

End Function? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '結(jié)束循環(huán)

3、Sub 提取身份證的年齡()

? ? On Error Resume Next

? ? Dim ar, i, ii

? ? Dim tmp

? ?

? ? If Selection.Areas.Count > 1 Then Exit Sub

? ? If Selection.Cells.Count > Columns.Count Then

? ? ? ? MsgBox "您選擇的區(qū)域過(guò)大!"

? ? ? ? Exit Sub

? ? End If

? ? ar = Selection

? ? Set rngs = Application.InputBox("請(qǐng)選擇存放結(jié)果的區(qū)域", "提示", , , , , , 8)

? ? '一個(gè)單元格

? ? If Selection.Cells.Count = 1 Then

? ? ? ? tmp = IDAge(ar)

? ? ? ? ar = tmp

? ? ? ? rngs.Cells(1, 1) = ar

? ? ? ? Exit Sub

? ? End If

? ? '多個(gè)單元格

? ? Randomize Timer

? ? For i = 1 To UBound(ar)

? ? ? ? For ii = 1 To UBound(ar, 2)

? ? ? ? ? ? tmp = IDAge(ar(i, ii))

? ? ? ? ? ? ar(i, ii) = tmp

? ? ? ? Next

? ? Next

? ? rngs.Resize(UBound(ar), UBound(ar, 2)) = ar

End Sub

Function IDAge(sid) As String

? ? Dim rlt As Date

? ? Select Case Len(sid)

? ? ? ? Case 15

? ? ? ? ? ? rlt = Format("19" & mid(sid, 7, 6), "0000-00-00")

? ? ? ? Case 18

? ? ? ? ? ? rlt = Format(mid(sid, 7, 8), "0000-00-00")

? ? ? ? Case 0

? ? ? ? ? ? IDAge = ""

? ? ? ? ? ? Exit Function

? ? ? ? Case Else

? ? ? ? ? ? IDAge = "無(wú)效"

? ? ? ? ? ? Exit Function

? ? End Select

? ? IDAge = Year(Date) - Year(rlt)

End Function

4、Sub 身份證驗(yàn)證真假()

? ? On Error Resume Next

? ? Dim ar, i, ii

? ? Dim tmp

? ?

? ? If Selection.Areas.Count > 1 Then Exit Sub

? ? If Selection.Cells.Count > Columns.Count Then

? ? ? ? MsgBox "您選擇的區(qū)域過(guò)大!"

? ? ? ? Exit Sub

? ? End If

? ? ar = Selection

? ? Set rngs = Application.InputBox("請(qǐng)選擇存放結(jié)果的區(qū)域", "提示", , , , , , 8)

? ?

? ? '一個(gè)單元格

? ? If Selection.Cells.Count = 1 Then

? ? ? ? tmp = CheckID(ar)

? ? ? ? ar = tmp

? ? ? ?

? ? ? ? rngs.Cells(1, 1) = ar

? ? ? ? Exit Sub

? ? End If

? ?

? ? '多個(gè)單元格

? ? Randomize Timer

? ? For i = 1 To UBound(ar)

? ? ? ? For ii = 1 To UBound(ar, 2)

? ? ? ? ? ? tmp = CheckID(ar(i, ii))

? ? ? ? ? ? ar(i, ii) = tmp

? ? ? ? Next

? ? Next

? ? rngs.Resize(UBound(ar), UBound(ar, 2)) = ar

End Sub

Public Function CheckID(ByVal ID18 As String) As String

? ? ? ? Dim rlt As String

? ? ? ? Dim Ai(17) As Integer

? ? ? ?

? ? ? ? Select Case Len(ID18)

? ? ? ? ? ? Case 15

? ? ? ? ? ? ? ? CheckID = "舊身份證號(hào)"

? ? ? ? ? ? ? ? Exit Function

? ? ? ? ? ? Case 18

? ? ? ? ? ?

? ? ? ? ? ? Case 0

? ? ? ? ? ? ? ? CheckID = ""

? ? ? ? ? ? ? ? Exit Function

? ? ? ? ? ? Case Else

? ? ? ? ? ? ? ? CheckID = "無(wú)效身份證號(hào)"

? ? ? ? ? ? ? ? Exit Function

? ? ? ? End Select

? ? ? ? CC = "10X98765432"

? ? ? ? Wi = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)

? ? ? ? s = 0

? ? ? ? For i = 0 To 16

? ? ? ? ? ? Ai(i) = CInt(mid(ID18, i + 1, 1))

? ? ? ? ? ? s = s + Ai(i) * Wi(i)

? ? ? ? Next i

? ? ? ? rlt = mid(CC, s Mod 11 + 1, 1)

? ? ? ?

? ? ? ? If Right(ID18, 1) = rlt Then

? ? ? ? ? ? CheckID = "真"

? ? ? ? Else

? ? ? ? ? ? CheckID = "假"

? ? ? ? End If

End Function

歡迎進(jìn)去財(cái)稅賦能群,如想加我我們請(qǐng)先加微信572042107

圖片發(fā)自簡(jiǎn)書App
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容