两个excel 身份证号转换年龄和判断是否满十八岁的公式 请高手帮忙看下哪里有错 有时可用有时会出错是为啥

年龄 =INT((DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()))-DATE(MID(D3,7,4),MID(D3,11,2),MID(D3,13,2)))/365)
是否满十八 =IF(DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()))-DATE(MID(D3,7,4),MID(D3,11,2),MID(D3,13,2))-1900>18,"是","否")
不带直接复制粘贴网上的 我会搜索 主要是求解释

第1个回答  2019-09-18

=IF(DATEDIF(DATE(MID(C2,7,4),MID(C2,11,2),MID(C2,13,2)),"2019-09-18","y")>=18,"已满18岁","未满18岁")

式中C2为身份证号码所在单元格。"2019-09-18"为需要计算的日期,这个不同于TODAY,你可以任意输入一个日期。“已满18岁”“未满18岁”可以自己更改文本内容。

如果需要单独提取出生日期,就是=DATE(MID(C2,7,4),MID(C2,11,2),MID(C2,13,2)

第2个回答  2013-01-18
你的公式并不好且除365天也并不完全,如果366天的怎么办?直接用datedif就可以了
年龄
=datedif(text(mid(d3,7,len(d3)/2-1),"0-00-00"),today(),"y")
是否满十八
=if(datedif(text(mid(d3,7,len(d3)/2-1),"0-00-00"),today(),"y")>17,"是","否")
这里的D3中的身份证不管是15位或18位,都成立追问

现在我们这边身份证反正全都是18位的了 最后是Y 只算年份 那你的那个17就不能是周岁吧 会不会不精确呢

追答

都是18位公式可以简化
=datedif(text(mid(d3,7,8),"0-00-00"),today(),"y")

=if(datedif(text(mid(d3,7,8),"0-00-00"),today(),"y")>17,"是","否")

这个y并不是指年份对减,而是精确到日,正宗的周岁

本回答被提问者和网友采纳
第3个回答  2013-01-18
无需如此麻烦,直接使用取子串函数、文本格式函数、条件日期函数即可。
以18位身份证号码为例,假定数据在D3单元格:

年龄(按出生当月判断,可减少实际年龄误差):
=DATEDIF(TEXT(MID(D3,7,8),"0-00-00"),TODAY(),"M")/12

是否满十八(与上面相同,按出生当月判断,可减少实际年龄误差):
=IF(DATEDIF(TEXT(MID(D3,7,8),"0-00-00"),TODAY(),"M")/12>=18,"是","否")

以上公式可适用于wps表格/excel,已验证。追问

我想知道 我那个有没有错呢 还有那个18能否使周岁

追答

年龄的公式中:
DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY())) 处理今日的日期序数;

DATE(MID(D3,7,4),MID(D3,11,2),MID(D3,13,2))) 处理身份证的年月日转换并获得日期序数;

/365 完成对日期序数-》转换成年龄的计算;
INT()函数对年龄取整。

是否满十八的公式中增加的部分:

-1990 此参数有误,无法适用所有的数据,无法准确判断是否年满18岁。

第4个回答  2013-01-18
是电脑上程序的时间问题,你用的是IF函数,而且YEAR,MONTH,DAY都是当天所以会有不一样,你将电脑上的时间调一下就好了,我是学统计的,还有记得输入时括号要在英文状态下才行。
大家正在搜