Skip to content

sfz_年龄函数

函数名:wb_年龄 / sfz_年龄

函数功能

根据提供的18位或15位身份证号码,自动提取出生年月日,并计算其与指定基准日期之间的年龄差(以年为单位)。支持单个身份证号和区域输入,并可自定义计算基准日期,默认为当前日期。

参数规范

参数名类型必填示例特殊说明
身份证号Object"110101199003077635"A1:A10支持文本、数字、单元格或区域引用
基准日期Object"2023-04-01"TODAY()若未提供,默认为 DateTime.Today

使用案例

基础年龄计算

问题描述:从身份证号中计算年龄
公式演示

excel
=sfz_年龄("110101199003077635")

输出效果

text
34

指定基准日期

问题描述:以特定日期为基准计算年龄
公式演示

excel
=sfz_年龄("110101199003077635", "2020-12-31")

输出效果

text
29

区域输入处理

问题描述:批量计算多个身份证号码的年龄
公式演示

excel
=sfz_年龄(A1:A10)

输出效果
生成与输入区域相同大小的结果区域,每个单元格显示对应身份证号的年龄。

技术说明

身份证号解析规则

  • 18位身份证号:提取第7-14位(YYYYMMDD)作为出生日期。
  • 15位身份证号:提取第7-8位作为出生年份(默认为19XX年),第9-10位为月份,第11-12位为日期。

年龄计算方式

  • 使用 DateTime 类型进行日期差值计算,使用 referenceDate 与出生日期之间的差值,按年计算。
  • 支持闰年和非闰年日期的正确计算。

异常处理

错误场景返回值
非法身份证号(位数不符、非法字符)#VALUE!
无法解析的日期格式#VALUE!
输入为非文本、非数字类型#VALUE!
空值或缺失值#N/A

扩展应用

筛选成年人名单

公式演示

excel
=IF(sfz_年龄(A1)>=18, "成年", "未成年")

统计年龄段分布

公式演示

excel
=SUMPRODUCT(--(sfz_年龄(A1:A100)>=18)*(sfz_年龄(A1:A100)<=60))

功能说明:统计18-60岁之间的成年人数量。

注:本函数在WPS 2019+和Excel 365中测试通过,支持中文及英文操作系统。