excel中判断身份证号码的出生年月日及位数是否正确合法

=DATE(YEAR(CONCATENATE(MID(C1,7,VLOOKUP(LEN(C1),{15,2;18,4},2,0)),"/",MID(C1,VLOOKUP(LEN(C1),{15,9;18,11},2,0),2),"/",MID(C1,VLOOKUP(LEN(C1),{15,11;18,13},2,0),2))),MONTH(CONCATENATE(MID(C1,7,VLOOKUP(LEN(C1),{15,2;18,4},2,0)),"/",MID(C1,VLOOKUP(LEN(C1),{15,9;18,11},2,0),2),"/",MID(C1,VLOOKUP(LEN(C1),{15,11;18,13},2,0),2))),DAY(CONCATENATE(MID(C1,7,VLOOKUP(LEN(C1),{15,2;18,4},2,0)),"/",MID(C1,VLOOKUP(LEN(C1),{15,9;18,11},2,0),2),"/",MID(C1,VLOOKUP(LEN(C1),{15,11;18,13},2,0),2))))
看看这个公式还能不能简?^-^

身份证号在a1单元格,在你需要的单元格输入:
=IF(LEN(A1)=18,IF(TEXT(DATE(--MID(A1,7,4),--MID(A1,11,2),--MID(A1,13,2)),"yyyymmdd")=TEXT(--MID(A1,7,4),"0000")&TEXT(--MID(A1,11,2),"00")&TEXT(--MID(A1,13,2),"00"),"格式正确","日期格式错误"),"长度错误")
由于,今年1月1日起,15位的老身份证已经停用。因此,公式中仅判断18位身份证的情况。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-08

出生日期:=IF(A2<>"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")+0,)

性别:=IF(A2<>"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),)

年龄:=IF(A2<>"",DATEDIF(TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00"),TODAY(),"y"),)



三个都有了;你看你要那个,有问题在追加!

本回答被提问者采纳
第2个回答  2013-07-08

生日:

=DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2))


合法性:

=IF(LEN(A2)<>18,"不合法","合法")


见附件。