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