目录
引言
需求如下,根据身份证号码,自动输出年龄、出生日期和性别,分别保存在C列、D列、E列中
手动操作也太麻烦了,不但要截取出生日期,还要根据当前的日期计算年龄,有没有更方便快捷的办法实现呢?别急,下面就来教你一招,就算有更多的数据也能轻轻松松一键搞定!一起来看看吧
问题的分析与设计
需求看似很复杂,其实只要搞清楚身份证的编码规则,所有问题就能解决了。身份证作为每个公民唯一的、终身不变的身份代码,其中包含着很多个人信息,有着自己独特的编码规则。
身份证号码是由18位数字组成,其中,前6位对应省市区;7至14位为出生年月日;15至17位是同一地址码所标示的区域范围内对同年同月同日生人编订的顺序码。其中第17位表示性别,奇数为男性,偶数为女性;最后一位为校验码
了解了以上的编码规则,再结合实际的需求,其实我们只需要提取出7至14位、第17位数字即可解决问题了
数据的提取
前段时间我们一直利用正则表达式来实现数据的提取,如果想用正则表达式,也是有规律可循的,一定也能找到合适的规则。但是结合本期需求的数据特点,还有一种更加简便的方法介绍给大家。
首先把18位身份证号码作为一串字符,就可以使用处理字符串的方法和函数了。
Mid 函数是 VBA 中用于从字符串中提取子字符串的函数。它允许你指定一个起始位置以及要提取的字符数,从而返回所需的子字符串。语法结构:Mid(string, start[, length])
参数说明:
- string:必需的。表示从中提取子字符串的原始字符串。
- start:必需的。表示开始提取子字符串的位置(整数)。如果 sta