在之前的文章《Excel案例分享:5個只靠“拖拉”就實現(xiàn)的高效技巧》中,我們學習了5個Excel表格只靠“拖拉”就實現(xiàn)的高效技巧。而今天我們聊聊Excel檢驗身份證號碼真假的函數(shù)公式,快來看看!
手機如何做表格:點擊查看
說起假疫苗、毒奶粉這些駭人聽聞的事情,真的是憤怒加無奈,對于這類事情,作為普通人的我們,只能希望有關(guān)部門能夠加大管理檢查力度,杜絕再次發(fā)生這樣的惡性事件。同時對于自己的工作也要更加細心,在很多容易出現(xiàn)錯誤的環(huán)節(jié)反復核查,避免產(chǎn)生一些不良的后果,比如員工檔案中的身份證號碼就是一個非常容易發(fā)生問題的重災區(qū)!
今天我們就來和大家分享一個核查身份證號碼是否有錯誤的公式。
一般來說,身份證號碼會出現(xiàn)兩類錯誤,長度錯誤和內(nèi)容錯誤。
出現(xiàn)錯誤的原因大多數(shù)都輸入過程中發(fā)生的,對于長度錯誤來說,目前都是18位的號碼,如果長度出現(xiàn)錯誤,比較容易發(fā)現(xiàn),但是如果其中的某一個數(shù)字出現(xiàn)錯誤,那就非常難以發(fā)現(xiàn),以后就有可能會造成一些嚴重的后果,因此,今天重點就是核查內(nèi)容的正確性。
一、身份證號組成原理
首先需要了解一點關(guān)于身份證號碼的編碼規(guī)則:
18位身份證號碼組成:ddddddyyyymmddxxsp共18位,其中:1-6位是地區(qū)編碼,7-14為出生日期,15-17這三位是性別代碼,最后一位是根據(jù)前面的17個數(shù)字得到的校驗位。
校驗位的計算規(guī)則比較復雜:
(1)前十七位數(shù)字本體碼加權(quán)求和公式
S = Sum(Ai * Wi), i = 0, … , 16 ,先對前17位數(shù)字的權(quán)求和
Ai:表示第i位置上的身份證號碼數(shù)字值
Wi:表示第i位置上的加權(quán)因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)計算模
Y = mod(S, 11)
(3)通過模得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
要檢驗一個身份證號碼是否有誤,原理就是按照這個規(guī)則計算出校驗碼,再與最后一位數(shù)字去比較,如果不一致就是有問題了。對于這個規(guī)則理解起來還是比較費勁的,我們舉個例子來看看:
1、將前面的身份證號碼17位數(shù)分別乘以不同的系數(shù)。從第一位到第十七位的系數(shù)分別為:
7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、將這17位數(shù)字和系數(shù)相乘的結(jié)果相加。
3、用加出來和除以11,看余數(shù)是多少?
4、余數(shù)只可能有0-1-2-3-4-5-6-7-8-9-10這11個數(shù)字。其分別對應的最后一位身份證的號碼為1-0-X -9-8-7-6-5-4-3-2。
5、通過校驗碼對比得知如果余數(shù)是3,就會在身份證的第18位數(shù)字上出現(xiàn)的是9。如果對應的數(shù)字是10,身份證的最后一位號碼就是羅馬數(shù)字2。
例如:某男性的身份證號碼為【53010219200508011x】, 我們看看這個身份證是不是合法的身份證。
首先我們得出前17位的乘積和
【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】
是189,然后用189除以11得出的結(jié)果是189/11=17—-2,也就是說其余數(shù)是2。最后通過對應規(guī)則就可以知道余數(shù)2對應的檢驗碼是X,所以,可以判定這是一個正確的身份證號碼。
二、Excel檢驗身份證號碼真假
原理明白了,現(xiàn)在的問題就是如何將這個計算過程用Excel的公式來表示出來,在這里將公式分享給大家:
=IF(RIGHT(A2)=MID("10X98765432",MOD(SUM(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),"真","假")
注意這是個數(shù)組公式,輸入或者粘貼公式后,需要同時按住Ctrl和shift鍵再回車。
公式看上去非常復雜,使用的時候只需要把兩個A2修改為自己表格中身份證號對應的位置即可。
簡單來說一下公式的思路吧,核心部分就是
MID("10X98765432",MOD(SUM(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)
這一串,作用是將前面的17位數(shù)字按照校驗碼的規(guī)則計算出來,再與RIGHT(A2)做比較,RIGHT(A2)的作用就是從A2中提取最右邊的一位出來,根據(jù)比較結(jié)果用if函數(shù)來進行判斷。
我們可以再用這個公式來檢驗一下文章開頭圖片中的身份證號碼是否正確:
結(jié)果是假。
不妨用這個公式去檢驗一下你的表格中是否有錯誤的身份證號碼吧,對于判定為錯誤的號碼及時進行更正,將問題扼殺在萌芽階段!
相關(guān)學習推薦:excel教程