语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...
觀看視頻更直觀
我們建立信息表時不僅要輸入性別、生日和年齡等信息,往往也需要輸入身份證號碼,而身份證號碼中包含有籍貫、性別、生日和年齡等信息,從身份證號碼中提取上述信息可以減少輸入工作量,提高工作效率。利用Excel中的內置函數可以完成,但略顯煩瑣,要用到MID 函數、TEXT函數、、IF函數、ISEVEN函數(或ISODD函數或MOD函數)、DATEDIF函數、TODAY函數,很多人難以靈活使用。
我利用VBA在Excel中自定義了一個IDinfo函數,一個函數就能完成從身份證號碼中提取出性別、生日與年齡信息,還自動甄別身份證號碼輸入正誤,特別實用。
一、插入模塊并復制粘貼代碼
打開Excel后新建一個工作簿,右擊"sheet1工作表標簽,在彈出的快捷菜單中選擇"查看代碼"命令,打開VBA窗口,單擊"插入"菜單→"模塊"命令,插入一個模塊,選中其中的"模塊1",將下面的代碼復制到其中即可。
Public Function IDInfo(strID As String, Optional bType As Byte = 1)
Application.ScreenUpdating = False
Dim i As Byte, s As String
If Len(strID) <> 18 Then
IDInfo = "身份證號碼錯誤"
Exit Function
'若文本長度不等于18,返回"錯誤"并退出函數
End If
For i = 1 To 17
If Asc(Mid(strID, i, 1)) < 48 Or Asc(Mid(strID, i, 1)) > 57 Then
IDInfo = "身份證號碼有誤"
Exit Function
'若1至17位不是數字,返回"錯誤"并退出函數
End If
Next
For i = 1 To 17
a = Val(Mid(strID, i, 1)) '從左至右依次取得各位上的數字
w = (2 ^ (18 - i)) Mod 11 '計算加權因子
k = k + a * w '累計計算加權因子與數字的乘積和
Next i
k = k Mod 11 '求除以11的余數
s = Mid("10X98765432", k + 1, 1)
If s <> Right(strID, 1) Then
IDInfo = "身份證號碼錯誤"
Exit Function
'若身份證號碼校驗錯誤,返回"錯誤"并退出函數
End If
Select Case bType
Case 1 '獲取性別
If Val(Mid(strID, 17, 1)) Mod 2 = 0 Then
IDInfo = "女" '偶數性別為女
Else
IDInfo = "男" '奇數性別為男
End If
Case 2 '獲取生日
Dim iDate As Date
iDate = WorksheetFunction.Text(Mid(strID, 7, 8), "#-00-00")
IDInfo = Format(iDate, "Long Date")
Case 3 '獲取年齡
IDInfo = Format(Now, "yyyy") - Val(Mid(strID, 7, 4))
If Val(Mid(strID, 7, 4)) = 0 Then IDInfo = ""
End Select
End Function
二、IDinfo自定義函數的使用
1、函數語法:IDInfo(strID,[ bType])
strID:必需參數,代表身份證號碼或對身份證號碼的引用。
bType:可選參數,表示獲取信息的類型,1或省略表示獲取性別,2表示要獲取生日,3表示要獲取年齡。
2、使用范例
⑴A列存儲身份證號碼,其中A2為正確身份證號碼,其中均為杜撰的錯誤身份證號碼。
⑵在B2單元格內輸入"=IDinfo($A2, COLUMN(A1))",拖曳B2填充柄到D2單元格,再拖曳至所需目標處,如圖中D2單元格。注意:為了能正確拖曳復制公式,第1個參數要用混合引用,列鎖定行相對;第2個參數使用COLUMN函數也是為了方便拖曳,COLUMN函數返回列的列標,如COLUMN(A1)就是返回1即A列的列標,公式拖曳到C2、D2時,COLUMN(A1)就相應變成了COLUMN(B1)、COLUMN(C1),它們分別返回2和3,如果你不理解COLUMN函數就直接輸入參數1、2、3也行,數據較少也不麻煩。
總結
以上是生活随笔為你收集整理的语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 朗读评价语言集锦_评语大全之朗诵评语艺术
- 下一篇: elementui table渲染不出来