首頁>Club>
4
回覆列表
  • 1 # LBH26

    我剛剛為一個熟人編寫了個excel的二代身份證校驗公式,只針對第18位的校驗正確。

    二代身份證組成:6位省市區程式碼+8位年月日+3位派出所轄區編碼(但第17位特指性別)+1位校驗碼。格式如:110112 19980512 235 X

    簡介一下第18位校驗碼來由。1.乘積;2.求和;3.求餘數;4.餘數對應的數。

    1.乘積。 即把前面17位數,分別依次對應乘以(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)得到各自的乘積。

    2.求和。即把上面的乘和加起來。

    3.求餘數。把上面的和,除以11,會得到相應的十一個餘數,整除,則餘數為0。分別為(0,1,2,3,4,5,6,7,8,9,10)。

    4.對應的數。即餘數為(0,1,2,3,4,5,6,7,8,9,10),則校驗碼對應為:(1,0,X,9,8,7,6,5,4,3,2)。

    解讀:第18位只有1位數,但餘數分別有11個。從0-9可以表示10個。第11個要麼升位,但升位影響性別;要麼直接寫成兩位數,但兩位數影響身份證長度,變成19位數。釆取了一個折中辦法,利用了一個希臘字母X表示10,可能因為其它加密需要,餘數所對應的校驗碼就總體偏移了2。

    再寫一個Excel身份證校驗公式。可以把這個複製直接使用,假設A1填寫身份證號,公式為:

    =IF(LEN(A1)=18,IF(TEXT(CHOOSE(MOD(SUMPRODUCT(MID(A1,ROW($1:$17),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2},11)+1,1,0,"X",9,8,7,6,5,4,3,2),0)=RIGHT(A1),"真","假"),"號碼有誤")

    注:公式為手工錄入對應括號,不知是否有欠缺,難免有誤,請諒解.

    公式解釋:如果(號碼)是18個字元數,繼續,否則判斷為“號碼有誤”。如果這個數與文字(號碼)最後一個字元相同,則判斷為“真”,否則為“假”。TEXT:指定轉變為數字格式,輸出為1位數;CHOOSE索引到某字元;MOD,求餘,除數為11;SUMPRODUCT,對應元素相乘,並返回乘積之和;MID,指定字元;ROW,行號,參照區域,此處為選定區域內依次1-17。公式具體解釋較複雜,本人水平有限,能用能讀懂就不錯了。歡迎指正。

  • 中秋節和大豐收的關聯?
  • 交往不到2個月,郭碧婷是如何獲得向太的認可,真相是怎樣的?