Excel中利用身份證號碼提取個人訊息
辦公室的小秦向我求教,說最近需要上報一份材料,這份材料是用Excel做的匯總表,其中必須輸入每位員工的姓名、性別、身份證號碼、出生年月、籍貫、畢業學校、職稱等相關訊息,她的要求是有無簡單的辦法對身份證號碼、性別、出生年月的資料進行核對。下面我們就來看一下具體的核對方法。
一、分析身份證號碼
其實,身份證號碼與一個人的性別、出生年月、籍貫等訊息是緊密相連的,無論是15位還是18位的身份證號碼,其中都儲存了相關的個人訊息。
15位身份證號碼:第7、8位為出生年份(兩位數),第9、10位為出生月份,第11、12位代表出生日期,第15位代表性別,奇數為男,偶數為女。
18位身份證號碼:第7、8、9、10位為出生年份(四位數),第11、第12位為出生月份,第13、14位代表出生日期,第17位代表性別,奇數為男,偶數為女。
例如,某員工的身份證號碼(15位)是320521720807024,那麼表示1972年8月7日出生,性別為女。如果能想辦法從這些身份證號碼中將上述個人訊息提取出來,不僅快速簡便,而且不容易出錯,核對時也只需要對身份證號碼進行檢查,肯定可以大大提高工作效率。
二、提取個人訊息
這裡,我們需要使用IF、LEN、MOD、
MID、DATE等函數從身份證號碼中提取個人訊息。如圖1所示,其中員工的身份證號碼訊息已輸入完畢(C列),出生年月訊息填寫在D列,性別訊息填寫在B列。
1. 提取出生年月訊息
由於上交報表時只需要填寫出生年月,不需要填寫出生日期,因此這裡我們只需要關心身份證號碼的相應部位即可,即顯示為「7208」這樣的訊息。在D2單元格中輸入公式「=IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4))」,其中:
LEN(C2)=15:檢查C2單元格中字元串的字元數目,本例的含義是檢查身份證號碼的長度是否是15位。
MID(C2,7,4):從C2單元格中字元串的第7位開始提取四位數位,本例中表示提取15位身份證號碼的第7、8、9、10位數位。
MID(C2,9,4):從C2單元格中字元串的第9位開始提取四位數位,本例中表示提取18位身份證號碼的第9、10、11、12位數位。
IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4)):IF是一個邏輯判斷函數,表示如果C2單元格是15位,則提取第7位開始的四位數位,如果不是15位則提取自第9位開始的四位數位。
如果需要顯示為「70年12月」這樣的格式,請使用DATE格式,並在「單元格格式→日期」中進行設置。
2. 提取性別訊息
由於報表中各位員工的序號編排是按照上級核定的編制進行的,因此不可能按照男、女固定的順序進行編排,如果一個一個手工輸入的話,既麻煩又容易出錯。
例如性別訊息統一在B列填寫,可以在B2單元格中輸入公式「=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")」,其中:
LEN(C2)=15:檢查身份證號碼的長度是否是15位。
MID(C2,15,1):如果身份證號碼的長度是15位,那麼提取第15位的數位。
MID(C2,17,1):如果身份證號碼的長度不是15位,即18位身份證號碼,那麼應該提取第17位的數位。
MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2):用於得到給出數位除以指定數位後的餘數,本例表示對提出來的數值除以2以後所得到的餘數。
IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女"):如果除以2以後的餘數是1,那麼B2單元格顯示為「男」,否則顯示為「女」。
Enter鍵確認後,即可在B2單元格顯示正確的性別訊息,接下來就是選中填充柄直接拖曳。如圖2所示,現在這份報表無論是提取訊息或是核對,都方便多了!
圖1 輸入身份證號碼
圖2 提取個人訊息