
电子表格中提取身份证号.doc
3页1*假设身份证号在 A1单元格,在 B1输入公式 =MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2)即可 老生份证号就适当修改2*假设身份证号在 A1单元格,在 B1输入公式 =IF(LEN(A2)=18,(MID(A2,7,4)&"-"&MID(A2,11,2)&"-"&MID(A2,13,2)),("19"&MID(A2,7,2)&"-"&MID(A2,9,2)&"-"&MID(A2,11,2))) 把 B1单元格的公式向下复制就行了,与A列身份证号对应的生日就出现在 B列了3*我的公式较复杂,我插入了城市代码:身份证号与地区对照表!中保存所有代码 A、 B、 C、 D、 E、 F、 G 序号、姓名、身份证号、性别、籍贯、出生年月、年龄 A2=1 B2=张三 C2=120220198205250312 D2=IF(LEN($C2)=15,IF(MOD(VALUE(RIGHT($C2,1)),2)=0,"女","男"),IF(LEN($C2)=18,IF(MOD(VALUE(MID($C2,17,1)),2)=0,"女","男"),"0")) E2=IF(VALUE((VLOOKUP(VALUE(MID($C2,1,6)),身份证号与地区对照表!A:B,1,1)))=VALUE(MID($C2,1,6)),(VLOOKUP(VALUE(MID($C2,1,2)&"0000"),身份证号与地区对照表!A:B,2,1)&VLOOKUP(VALUE(MID($C2,1,4)&"00"),身份证号与地区对照表!A:B,2,1)&VLOOKUP(VALUE(MID($C2,1,6)),身份证号与地区对照表!A:B,2,1)),"身份证号与城市代码不符") F2=IF(LEN($C2)=15,CONCATENATE("19",MID($C2,7,2),".",MID($C2,9,2)),IF(LEN($C2)=18,CONCATENATE(MID($C2,7,4),".",MID($C2,11,2)),"0")) G2=IF(LEN($C2)=15,YEAR(NOW())-1900-VALUE(MID($C2,7,2)),IF(LEN($C2)=18,YEAR(NOW())-VALUE(MID($C2,7,4)),"0"))中国居民身份证号码是一组特征组合码,原为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"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),)E2 =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) 。












