第3个回答 2010-02-22
=MID(A1,7,4)&"/"&MID(A1,11,2)&"/"&MID(A1,13,2)
将上面的A1换成身份证号码所在单元格地址
这是针对18位身份证号
如果是15位身份证号,基本方法相同,但年份只有两位数,可在公式前面加上 "19"& 或"20"&,要自动判断加哪一个,可用if()函数。
=IF(MID(A1,7,2)<50,"20"&MID(A1,7,2)&"/"&MID(A1,9,2)&"/"&MID(A1,11,2),"19"&MID(A1,7,2)&"/"&MID(A1,9,2)&"/"&MID(A1,11,2))
以上的判断以50为界,即小于50的算作20XX年,大于等于50的算作19XX,显然如果处理2050后或者1949年前出生的人会出错,但这没有办法,这也是新身份证用四位的原因。
考虑同时处理两种身份证号码,则可写成
=if(len(A1)=15,IF(MID(A1,7,2)<50,"20"&MID(A1,7,2)&"/"&MID(A1,9,2)&"/"&MID(A1,11,2),"19"&MID(A1,7,2)&"/"&MID(A1,9,2)&"/"&MID(A1,11,2)),if(len(a1)=18,MID(A1,7,4)&"/"&MID(A1,11,2)&"/"&MID(A1,13,2),"号码长度不对"))
注意这种方式得到的日期Excel不能识别为日期型数据!
要让Excel当日期,应用Date()函数,用 "/"& 这样的文本连接的方式只能是产生表面的日期格式的形式。
=IF(LEN(A9)=15,IF(MID(A9,7,2)<50,DATE("20"&MID(A9,7,2),MID(A9,9,2),MID(A9,11,2)),DATE("19"&MID(A9,7,2),MID(A9,9,2),MID(A9,11,2))),IF(LEN(A9)=18,DATE(MID(A9,7,4),MID(A9,11,2),MID(A9,13,2)),"号码长度不对"))
这种方式的显示格式是YYYY-M-D,要得到YYYY/MM/DD的效果,需设置数字格式(自定义)为yyyy/mm/dd