[轉載]EXCEL中如何提取身份證出生日期和性別信息以及檢驗身份證|應用軟體

[轉載]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"),)
推薦閱讀:

揭東區信息公開目錄系統
請求大神破譯如下摩爾斯電碼。?
女孩子不回我信息,該從哪方面入手?
武進教育信息網
八字之中血光之災的信息

TAG:軟體 | 性別 | 生日 | 應用軟體 | 轉載 | 身份證 | 日期 | 信息 | 身份 | 出生 |