根據現行的居民身份證編碼規定,正在使用的是18位的身份證編碼,早期使用的15位的身份證編碼,而新舊身份證號碼同時共存還需要一段時間,如何將15位的身份證號碼轉換為18位的身份證號碼呢?
Excel根據公民身份證號的組成原則,將15位的身份證號碼生成18位的身份證號碼。
公民身份證號的組成:1. 地址碼:表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。身份證號碼的前六位即地址碼。
2. 出生日期碼:表示編碼對象出生的年、月、日,按GB/T7408的規定執行,年、月、日分別用4位、2位、2位數字表示,之間不用分隔符。早期的15位的身份證號碼年采用2位數據表示。
3. 順序碼:表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。第17位為順序碼。
4. 第18位為校驗碼。
校驗碼的計算方式:1. 對前17位數字本體碼加權求和。公式為:S = Sum(Ai * Wi), i = 0, … , 16。其中Ai表示第i位置上的身份證號碼數字值,Wi表示第i位置上的加權因子,其各位對應的值依次為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2.以11對計算結果取模 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。
Excel如何將15位的身份證號碼轉換為18位的身份
如上圖所示,在B2單元格輸入如下代碼:
=IF(LEN(A2)=18,A2,IF(LEN(A2)=15,LEFT(A2,6) & "19" & RIGHT(A2,9) &
MID("10X98765432",MOD(MID(A2,1,1)*7+MID(A2,2,1)*9+MID(A2,3,1)*10+MID(A2,4,1)*5+
MID(A2,5,1)*8+MID(A2,6,1)*4+1*2+9*1+MID(A2,7,1)*6+
MID(A2,8,1)*3+MID(A2,9,1)*7+MID(A2,10,1)*9+MID(A2,11,1)*10+MID(A2,12,1)*5+
MID(A2,13,1)*8+MID(A2,14,1)*4+MID(A2,15,1)*2,11)+1,1),"錯誤的身份證號碼"))
按回車鍵確定即可將15位的身份證號碼轉變為18位的身份證號碼。
思路:首先判斷身份證號碼是15位還是18位,如果是18位,不進行轉換;如果是15位,將年加上“19”改為4位年份,再加上18位校驗碼;
相關說明:Excel2003IF函數,第一個條件為真,則取第二個參數的值,否則取每三個參數的值。
Excel2003LEN函數判斷參數的長度。
Excel2003MOD函數結果是第一個參數除以第二個參數所得的余數。
Excel2003MID函數從第二個參數位置開始,在第一個參數查找,返回第三個參數長度的字符串。
Excel2003LEFT函數截取第一個參數左邊第二個參數長度的字符串。
RIGHT函數截取第一個參數右邊第二個參數長度的字符串。