WPS根据身份证号提取年龄的公式怎么解决不了?身份证号年龄公式排错

更新时间:2026-07-29 14:07

WPS用身份证号算年龄时,不要只用当前年份减出生年份。18位号码的第7到14位是出生年月日,把这段内容拆成年、月、日并交给DATEDIF计算完整年数,生日尚未到来的记录才不会多算一岁。

18位身份证号年龄公式

身份证号在A2时,可在年龄列输入下面的公式。DATE先组合出生日期,TODAY() 取当天日期,"Y" 返回两个日期之间已经走完的整年数。

=DATEDIF(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)),TODAY(),"Y")

填入后向下填充。课程中的DATEDIF也是按出生日期到TODAY() 的整年数计算年龄。

WPS根据身份证号提取年龄的公式怎么解决不了?身份证号年龄公式排错

公式报错先检查身份证号

  • 显示1.1E+17或末位变成0:号码已经被当成数值,改成文本格式不能找回丢失数字,应从原始数据重新导入。
  • LEN不是18:检查空格、换行和复制来的隐藏字符。可先用TRIM清理首尾空格,再确认号码长度。
  • DATEDIF返回错误:检查MID取出的月份和日期是否真实存在,也要排除出生日期晚于TODAY() 的异常记录。
  • 年龄差一岁:通常是公式只减了年份。用完整出生日期和DATEDIF的 "Y" 才能跨过生日临界日。

15位和18位号码混在一起

15位旧号码不能套用18位公式。可按长度分支,15位号码从第7位取六码,年份前补上19。非15位或18位的数据直接提示异常,避免空值和错误号码被误算。

=IF(LEN(A2)=18,DATEDIF(DATE(MID(A2,7,4),MID(A2,11,2),MID(A2,13,2)),TODAY(),"Y"),IF(LEN(A2)=15,DATEDIF(DATE("19"&MID(A2,7,2),MID(A2,9,2),MID(A2,11,2)),TODAY(),"Y"),"号码长度不正确"))

批量计算后的核对方法

抽查一条今年已经过生日的记录和一条生日尚未到来的记录,再核对年龄是否符合预期。身份证号列应在粘贴前设为文本。报表若只统计某一天的年龄,把TODAY() 换成存放统计日期的单元格,历史数据重开后不会跟着当天日期变化。