excel身份证号提取性别
身份证号结构与性别规则
身份证号为18位数字,其结构如下: | 位数 | 内容 | 说明 | |------------|--------------------|--------------------------| | 1-6位 | 地址码 | 省市区行政区划代码 | | 7-14位 | 出生日期码 | 格式YYYYMMDD | | 15-17位 | 顺序码 | 第17位为性别标识码 | | 第18位 | 校验码 | 0-9或X(校验码) |
性别规则:
- 第17位为奇数(1,3,5,7,9):男性
- 第17位为偶数(0,2,4,6,8):女性
通过公式提取性别
方法1:使用MID
+MOD
函数
-
提取第17位数字:
=MID(A2,17,1)
(假设身份证号在A2单元格) -
判断奇偶性:
=IF(MOD(MID(A2,17,1),2)=0,"女","男")
公式解析:MID(A2,17,1)
:提取第17位字符。MOD(数值,2)
:计算数值除以2的余数。- 如果余数为0,则为偶数(女性);否则为奇数(男性)。
方法2:结合RIGHT
函数
若需从身份证号右侧提取第17位:
=IF(MOD(MID(A2,LEN(A2)-1,1),2)=0,"女","男")
适用场景:身份证号位置不固定时(如B列),LEN(A2)-1
动态定位第17位。
错误处理与数据验证
校验身份证号长度
身份证号应为18位,可用LEN
函数校验:
=IF(LEN(A2)=18,公式, "无效身份证号")
示例:
=IF(LEN(A2)=18,IF(MOD(MID(A2,17,1),2)=0,"女","男"),"无效身份证号")
处理非数字字符
若身份证号包含非数字字符(如X),需先提取数字部分:
=IF(ISNUMBER(MID(A2,17,1)),公式,"含非数字字符")
完整公式:
=IF(LEN(A2)=18,IF(ISNUMBER(MID(A2,17,1)),IF(MOD(MID(A2,17,1),2)=0,"女","男"),"含非数字字符"),"无效身份证号")
VBA自定义函数(高级用户)
若需批量处理,可编写VBA函数:
Function GetGender(ID As String) As String If Len(ID) <> 18 Then GetGender = "无效身份证号" Exit Function End If Dim genderCode As Integer If IsNumeric(Mid(ID, 17, 1)) Then genderCode = CInt(Mid(ID, 17, 1)) If genderCode Mod 2 = 0 Then GetGender = "女" Else GetGender = "男" End If Else GetGender = "含非数字字符" End If End Function
使用方法:
- 按
ALT + F11
打开VBA编辑器。 - 插入模块,粘贴代码。
- 在Excel中输入
=GetGender(A2)
。
操作示例与结果对比
身份证号 | 公式1结果 | 公式2结果 | VBA函数结果 |
---|---|---|---|
110105199001012345 | 男 | 男 | 男 |
220104198506078901 | 女 | 女 | 女 |
33010619751212345X | 男 | 男 | 男 |
44052419990909999O | 含非数字字符 | 含非数字字符 | 含非数字字符 |
123456789012345678 | 男 | 男 | 男 |
FAQs
问题1:如果身份证号最后一位是X,会影响性别判断吗?
解答:不会,性别仅由第17位数字决定,与最后一位校验码无关,但需确保第17位是数字,否则公式会返回错误提示。
问题2:如何快速对整列身份证号提取性别?
解答:
- 在B2单元格输入公式
=IF(MOD(MID(A2,17,1),2)=0,"女","男")
。 - 双击或拖动B2单元格右下角填充柄,向下复制公式至整列。
- 若需处理错误,可结合
IF(LEN(A2)=18,...)
版权声明:本文由 数字独教育 发布,如需转载请注明出处。