EXCEL中如何提取身份證出生日期 性別等

2022-06-04 18:27:05 字數 3207 閱讀 3379

excel中如何提取身份證出生日期、性別、檢驗身份證號碼的正確性(網路收集)

2011-09-28 18:24:12|分類: 電腦知識 |標籤:excel複製貼上 |字型大小大中小訂閱

excel中如何提取身份證出生日期、性別、檢驗身份證號碼的正確性

中國居民身份證號碼是一組特徵組合碼,原為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"),)

f2 =if(a2<>"",vlookup(left(a2,2),地區表!a:d,2,),)

h2 =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)

i2 =if(len(a2)=18,left(replace(a2,7,2,),15),a2)

2010-03-02 16:05

excel中如何從身份證號碼裡提取生年月日及性別等

假如,a1是姓名,b1是身份證號碼,c1是出生年月 可以用以下公式求出 if len b2 15,19 mid b2,7,2 年 mid b2,9,2 月 mid b2,11,2 日 mid b2,7,4 年 mid b2,11,2 月 mid b2,13,2 日 在c2設定單元格格式為 日期 即可...

如何從身份證中提取出生年月及資訊

假如,a1是姓名,b1是身份證號碼,c1是出生年月 可以用以下公式求出 if len b2 15,19 mid b2,7,2 年 mid b2,9,2 月 mid b2,11,2 日 mid b2,7,4 年 mid b2,11,2 月 mid b2,13,2 日 在c2設定單元格格式為 日期 即可...

用Excel提取身份證號碼人資訊

巧用excel 利用身份證號碼提取個人資訊巧用excel 利用身份證號碼提取個人資訊 一 分析身份證號碼 其實,身份證號碼與乙個人的性別 出生年月 籍貫等資訊是緊密相連的,無論是15位還是18位的身份證號碼,其中都儲存了相關的個人資訊。15位身份證號碼 第7 8位為出生年份 兩位數 第9 10位為出...