如何在excel中根据身份证号码或者出生年月自动计算出年龄 要求:20160831来计算。

另外,我用=IF(LEN(F3)=15,MID(F3,7,2)&"-"&MID(F3,9,2)&"-"&MID(F3,11,2),MID(F3,7,4)&"-"&MID(F3,11,2)&"-"&MID(F3,13,2)) 这个计算来的出生怎么会有的数据可以有的又是" 533122200411051459" 2200-41-10?提取的数位向前了一步。怎么解决,数据全部是文本了。在线急等
=IF(LEN(F3)=15,MID(F3,7,2)&"-"&MID(F3,9,2)&"-"&MID(F3,11,2),MID(F3,7,4)&"-"&MID(F3,11,2)&"-"&MID(F3,13,2))
=DATEDIF(G3,"2016-08-31","y")
看出生哪里,怎么解决

那是你的身份证不规范,如果数据是乱填的,后面什么公式都无法得到准确的结果。

计算年龄的公式很简单:
=2016-生日年-IF(生日月>8,1,0)

如果身份证的问题只是含有空白,可以使用TRIM(F3)代替你公式中的F3,但是如果还有其它字符(回车、换行、中文空格等)就不好处理了。追问

=IF(LEN(F3)=15,MID(F3,7,2)&"-"&MID(F3,9,2)&"-"&MID(F3,11,2),MID(F3,7,4)&"-"&MID(F3,11,2)&"-"&MID(F3,13,2))

=DATEDIF(G3,"2016-08-31","y")

上图就是用这两个公式搞的,看出生,,怎么解决呢

追答

百度云分享文件,给你写好。

如果没有15位的身份证,公式无需这么复杂的。

解决空格的方法前面已回

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-10-10
=IF(LEN(F3)=18,TEXT(MID(F3,7,8),"0000-00-00"),TEXT(MID(F3,7,6),19&"00-00-00"))
18位取8位生日
15位取6位生日
公式中15位身份证前自动加19了

计算年龄的话
=DATEDIF(IF(LEN(F3)=18,TEXT(MID(F3,7,8),"0000-00-00"),TEXT(MID(F3,7,6),19&"00-00-00")),"2016-09-01","Y")
加减运算和数数会有一天的差异,计算年龄,截止日期要加1

看你的贴图,有些身份证号前面应该有两个空格
=DATEDIF(IF(LEN(TRIM(F3))=18,TEXT(MID(TRIM(F3),7,8),"0000-00-00"),TEXT(MID(TRIM(F3),7,6),19&"00-00-00")),"2016-09-01","Y")追问

用你给的出来的,啥意思呢

本回答被提问者采纳
第2个回答  2016-10-10
根据身份证号计算年龄,公式:
=DATEDIF(TEXT(MID(TRIM(CLEAN(F3)),7,8),"0-00-00"),TODAY(),"y")
相似回答