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中测试通过,支持中文及英文操作系统。