[轉載]EXCEL中如何提取身份證出生日期和性別信息以及檢驗身份證|應用軟體
07-04
[轉載]EXCEL中如何提取身份證出生日期和性別信息以及檢驗身份證 註:此貼轉自百度,原貼中部分公式有誤,正文部分的公式未及一一訂正,因原貼附圖不能轉載顯示,故自做一圖,相應的在此將原貼中G2單元格公式錯誤加以修正。在此對原貼作者致以敬意。 中國居民身份證號碼是一組特徵組合碼,原為15位,現升級為18位,其編碼規則為: 15位:6位數字常住戶口所在縣市的行政區劃代碼,6位數字出生日期代碼,3位數字順序碼。 18位:6位數字常住戶口所在縣市的行政區劃代碼,8位數字出生日期代碼,3位數字順序碼和1位檢驗碼。 其中3位數字順序碼,是為同一地址碼的同年同月同日出生人員編製的順序號,偶數的為女性,奇數的為男性。 1、提取籍貫地區的行政區劃代碼(A2為身份證號,下同) 15與18位通用:=LEFT(A2,6) 如果有一個編碼和省份地區的對照表,可以用VLOOKUP函數來提取地區信息。 2、提取出生日期信息 15位:=--TEXT(19&MID(A2,7,6),"#-00-00") 18位:=--TEXT(MID(A2,7,8),"#-00-00") 15與18位通用:=--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6+IF(LEN(A2)=18,2,0)),"#-00-00") 簡化公式:=--TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00") (請將輸入公式的單元格格式設置為日期格式) 3、提取性別信息 15位:=IF(MOD(RIGHT(A2),2)=1,"男","女") 18位:=IF(MOD(MID(A2),17,1)=1,"男","女") 15與18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女") 簡化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女") 4、檢驗身份證號碼的正確性 18位身份證號碼的最後一位是檢驗碼,它是根據身份證前17位數字依照規則計算出來的,其值0~9或X。一般情況只要有一位數字輸入錯誤,依照規則計算後就會與第18位數不符。當然不排除按錯誤號碼計算後恰好與檢驗碼相符的情況,但這種情況出現的可能性較低。因此,對18位號碼的驗證採用如下公式: =MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2,1) 對於15位身份證,由於沒有檢驗碼,我們只能簡單地去判斷出生日期代碼是否是一個有效的日期,避免輸入一些像「731302」或「980230「等這樣不存在的日期。 =ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")) 綜合15位和18位後的通用公式為: =IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")))) 由於目前15位身份證號碼已經很少了,如果對15位的號碼不需要作進一步的判斷,則公式可以簡化成: =IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),LEN(A2)=15) 將上面的公式放到B2單元格,如果結果為TRUE,則身份證號是正確的,結果為FALSE則是錯誤的。 你也可以將上述公式放在數據有效性中,防止錄入錯誤的身份證號。操作方法:選擇需要輸入身份證的全部單元格區域,比如A2:A10,點菜單"數據"-"有效性",在"允許"的下拉框中選擇"自定義",在"公式"輸入上面的15位和18位通用公式,確定以後即可。注意:公式里的"A2"是你剛才選定要輸入身份證的單元格區域的第一個單元格,如果你是要在C3:C20輸入身份證號,則將公式里的"A2"改為"C3"。另外,你也可以先設置好某單個單元格的數據有效性(這時公式的A2改為選定的單元格),再用格式刷將其格式刷到其他需要相同設置的單元格。 5、15位升為18位 =IF(LEN(A2)=15,REPLACE(A2,7,,19)&MID("10X98765432",MOD(SUMPRODUCT(MID(REPLACE(A2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),A2) 6、18位轉換為15位 =IF(LEN(A2)=18,LEFT(REPLACE(A2,7,2,),15),A2) 7、示例
表中公式: B2 =IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")))) C2 =IF(A2<>"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")+0,) D2 =IF(A2<>"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),) E2 =IF(A2<>"",DATEDIF(TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00"),TODAY(),"y"),)
推薦閱讀:
※揭東區信息公開目錄系統
※請求大神破譯如下摩爾斯電碼。?
※女孩子不回我信息,該從哪方面入手?
※武進教育信息網
※八字之中血光之災的信息