在工作中涉及身份證號(hào)碼正確性的校驗(yàn)時(shí),很多人苦苦求索但找不到方法。 其實(shí)Excel強(qiáng)大的計(jì)算和統(tǒng)計(jì)功能可以幫我們自動(dòng)校驗(yàn),免除手工排查數(shù)據(jù)的麻煩。 今天我來結(jié)合一個(gè)實(shí)際案例,介紹1個(gè)公式校驗(yàn)身份證號(hào)碼的正確性的方法。 注:現(xiàn)在的身份證號(hào)碼都是18位的,由17位數(shù)字和末位校驗(yàn)碼構(gòu)成。原來的15位編碼方式已經(jīng)停用,而且15位沒有使用校驗(yàn)。最后一位可能出現(xiàn)的X并不是英文字母X,而是希臘數(shù)字10的縮寫X B2單元格輸入以下數(shù)組公式,按<Ctrl+Shift+Enter>組合鍵結(jié)束輸入,并向下填充。 =IF(A2="","",IF(AND(LEN(A2)=18,COUNTIF(行政區(qū)劃代碼!A:A,LEFT(A2,6))>0,ISNUMBER(--TEXT(MID(A2,7,8),"0000-00-00")),--TEXT(MID(A2,7,8),"0000-00-00")>1,--TEXT(MID(A2,7,8),"0000-00-00")<TODAY(),RIGHT(A2)=MID("10X98765432",MOD(SUM(MID(MID(A2,1,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)),"正確","錯(cuò)誤")) 此公式的校驗(yàn)規(guī)則包括以下四點(diǎn)。 1、身份證號(hào)碼前6位數(shù)字可以在行政區(qū)劃代碼中找到,工作表‘行政區(qū)劃代碼’中A列放置的是中華人民共和國國家統(tǒng)計(jì)局發(fā)布的6位行政區(qū)劃代碼。 http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/ 2、身份證號(hào)碼中從第7位開始的8位數(shù)字是可以識(shí)別的日期格式,日期范圍介于1900年1月1日至當(dāng)前日期之間,且不會(huì)出現(xiàn)2月30日或4月31日這類錯(cuò)誤日期。 3、身份證號(hào)碼長度為18位。 4、身份證號(hào)碼第18位是根據(jù)前面十七位數(shù)字碼,按照ISO 7064:1983.MOD 11-2校驗(yàn)碼計(jì)算出來的檢驗(yàn)碼。具體計(jì)算規(guī)則如下。 1)將前面的身份證號(hào)碼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個(gè)數(shù)字。其分別對(duì)應(yīng)的最后一位身份證的號(hào)碼為1 0 X 9 8 7 6 5 4 3 2; 5)通過上面得知如果余數(shù)是2,就會(huì)在身份證的第18位數(shù)字上出現(xiàn)羅馬數(shù)字的X。如果余數(shù)是10,身份證的最后一位號(hào)碼就是2。 |
|