个人信件
logo

Excel自动识别年龄性别

在填写报表时,经常需要填性别、年龄、出生年月、身份证号码,特别是当需要统计的人数比较多时,我们可以利用VBA编码来减少重复操作,只需填上身份证号码,通过运行宏,一键自动生成一列的数据,减少大量繁琐的手工操作。以excel 2003为例,操作步骤如下: 在E列填上身份证号码 ,B、C、D列分别为性别、年龄、出生年月。依次点击“工具”—“宏”—“visual basic编辑器”,进入代码编辑窗口,输入如下代码:


Sub 性别()
Dim i, s As Integer
For i = 2 To 12
If Len(Range("E" & i)) <> 18 Then '检查是否为18位数
MsgBox "身份证号码错误!"
Else
s = Mid(Range("E" & i), 17, 1) '提取第17位数
If s \ 2 = s / 2 Then '是否为偶数
Range("B" & i) = "女" '如果是,则性别=女
Else '否则
Range("B" & i) = "男" '性别=男
End If
End If
Next
End Sub
关闭代码编辑窗口,在表格的工具栏依次点击“工具”—“宏”—“宏”,弹出运行宏对话框, 单机右上角的“执行”按钮,则B列所有的性别被自动填写完毕。

用同样的方法,可以实现其余两列的自动化。关于年龄,主要有两种算法:一是以填表之年份减去出生年份;二是以当年的7月1日为准,满一年为一岁 。下面也分别写出了这两种代码:
Sub 年龄()
Dim i, s As Integer
For i = 2 To 12
If Len(Range("E" & i)) <> 18 Then
MsgBox "身份证号码错误!"
Else
s = Year(Now()) - Mid(Range("E" & i), 7, 4) '用当时年份与出生年份比较
Range("C" & i) = s
End If
Next
End Sub
Sub 年龄71()
Dim i As Integer, s As Long
For i = 2 To 12
If Len(Range("E" & i)) <> 18 Then
MsgBox "身份证号码错误!"
Else
s = 20140701 - Mid(Range("E" & i), 7, 8) '以当年7月1日为准
Range("C" & i) = Int(s / 10000)
End If
Next
End Sub
再输入出生年月代码:
Sub 出生年月()
Dim i, s, m As Integer
For i = 2 To 12
If Len(Range("E" & i)) <> 18 Then
MsgBox "身份证号码错误!"
Else
s = Mid(Range("E" & i), 7, 4) '提取年份
m = Mid(Range("E" & i), 11, 2) '提取月份
Range("D" & i) = s & "年" & m & "月"
End If
Next
End Sub

在表格窗口点击“工具”—“宏”—“宏”,弹出对话框,选定相应的宏,点击“执行”,相应的列将自动输入完毕。
1、E列的单元格数字格式应选为文本,以免出现身份证号码不能正确显示;D列的数字格式应选为日期。
2、代码中的双引号和括号要在英文状态下输入。
3、本文系作者原创,转载请注明出处,原文链接:http://www.kjzwt.cn


阅读:199
  
123 3条记录 第3页/共3