華文網

核對身份證號碼的這種粗活不用眯著眼睛去核對了 EXCEL全搞定

平時工作中大家肯定都遇到過公司組織旅遊收集姓名和身份證號碼資訊用於組團買機票什麼的。而一遇到這種事情,你們的組織人一定反復叮嚀一定把姓名和身份證號碼弄對,

不然會出現很大的麻煩,而身份證號碼也是反復核對幾遍,眼睛都花了。如何通過excel來初步驗證身份證號碼的準確性呢,今天小編就來教大家。

在寫函數之前我們要明白身份證號碼存在怎樣的規律。不懂其中規律的可以閱讀小編的另一篇文章身份證號碼中隱藏的秘密 尾號X的特殊意義

身份證號碼從左到右,前11位元數字分別乘以7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2並求和,然後和在除以11求餘數,根據對照表求得的對應數就是身份證的第十八位驗證數,所以通過這個基本可以確定身份證是否有誤寫的可能性。

餘數0,1,2,3,4,5,6,7,8,9,10

分別對應以下身份證尾數1,0,X,9,8,7,6,5,4,3,2

思路分析:

首先應檢測身份證號碼是否有漏寫與多寫的情況

應用函數IF(測試條件,真值,假值) 解釋為:如果測試條件成立時,

返回真值,否則返回假值。

LEN(字串)解釋為:返回字串的字元個數

那麼最後這個函數就可以寫成

=IF(身份證號啊位數=18,“位數正確”,“位元數存在錯誤”)=IF(LEN(B2)=18,“位數正確”,“位元數存在錯誤”)

2.檢驗身份證尾數檢驗碼是否正確。

(2.1節)應用函數IF(測試條件,真值,假值) 解釋為:如果測試條件成立時,返回真值,否則返回假值。

RIGHT(字串,字元個數)解釋為:返回字串右側開始的具體個數的字元。

總函數=IF(計算所得尾數=身份證中的第18位尾數,“號碼正確”,“錯誤”)

=IF(計算所得尾數=RIGHT(B2,1),“號碼正確”,“錯誤”)

(2.2節)應用函數TEXT(數值,格式) 解釋為:把數位轉換為文本。

觀察餘數與尾數關係,0,1,2,3,4,5,6,7,8,9,10分別對應身份證尾數1,0,X,9,8,7,6,5,4,3,2可知除了012對應以外其他兩個數字相 加為12

分函數=IF(餘數=0,“1”,餘數不是0的情況)

餘數不是0的情況=IF(餘數=1,“0”,餘數不是0或者1的情況)

餘數不是0或者1的情況=IF(餘數=2,“X”,餘數不是0或者1或者2的情況)

餘數不是0或者1或者2的情況=12-餘數

嵌套函數後,該函數就是這個樣子:

分函數 =TEXT(計算所得的尾數值,0)

IF(餘數=0,“1”,IF(餘數=1,“0”,IF(餘數=2,“X”,12-餘數)))=返回計算所得的尾數值

最終嵌套完

分函數=TEXT(IF(餘數=0,“1”,IF(餘數=1,“0”,IF(餘數=2,“X”,12-餘數))),0)

為什麼要轉換為文本,因為2.1中RIGHT函數返回的是文本格式,文本格式之間的對比才有意義,不然數位8和文本8不相等的情況是我們不願看到的。

(2.3節)求和:身份證左到右17位元數字分別乘以7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2並求和

應用函數LEFT(字串,字元個數)解釋為:返回指定字串左側開始指定個數的字元。

MID(字串,開始位置,字元個數)解釋為:返回中間位置字串指定位置開始,指定位元數字元。

=LEFT(B2,1)*7+MID(B2,2,1)*9+MID(B2,3,1)*10+MID(B2,4,1)*5+MID(B2,5,1)*8+MID(B2,6,1)*4+MID(B2,7,1)*2+MID(B2,8,1)+MID(B2,9,1)*6+MID(B2,10,1)*3+MID(B2,11,1)*7+MID(B2,12,1)*9+MID(B2,13,1)*10+MID(B2,14,1)*5+MID(B2,15,1)*8+MID(B2,16,1)*4+MID(B2,17,1)*2

(2.4節)應用函MOD(數值,除數)解釋為:返回餘數,例如數值為11,除數為5的時候餘數為1

=MOD(身份證17位元數字個位數乘以因數之後的和,11)=餘數

分別少一位,多一位,修改尾數,修改中間數四個錯誤全部挑了出來

聲明:

本文中提到的身份資訊為虛擬軟體產生,只為演示用途,沒有任何實際意義。

文中一大漏洞就是身份證尾數X的大小寫問題,正常來講公安系統用大寫,但目前實際情況來看,大小寫通用,如果有強迫症的朋友不妨自己來分析一下怎麼解決這個問題。

只為演示用途,沒有任何實際意義。

文中一大漏洞就是身份證尾數X的大小寫問題,正常來講公安系統用大寫,但目前實際情況來看,大小寫通用,如果有強迫症的朋友不妨自己來分析一下怎麼解決這個問題。