如何使用Excel通过身份证号码来提取个人信息
办公室的小秦向我求教,说最近需要上报一份材料,这份材料是用Excel做的汇总表,其中必须输入每位员工的姓名、性别、身份证号码、出生年月、籍贯、毕业学校、职称等相关信息,她的要求是有无简单的办法对身份证号码、性别、出生年月的资料进行核对。下面我们就来看一下具体的核对方法。
一、分析身份证号码
其实,身份证号码与一个人的性别、出生年月、籍贯等信息是紧密相连的,无论是15位还是18位的身份证号码,其中都保存了相关的个人信息。
15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。
18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。
例如,某员工的身份证号码(15位)是320521720807024,那么表示1972年8月7日出生,性别为女。如果能想办法从这些身份证号码中将上述个人信息提取出来,不仅快速简便,而且不容易出错,核对时也只需要对身份证号码进行检查,肯定可以大大提高工作效率。
二、提取个人信息
这里,我们需要使用IF、LEN、MOD、MID、DATE等函数从身份证号码中提取个人信息。如图1所示,其中员工的身份证号码信息已输入完毕(C列),出生年月信息填写在D列,性别信息填写在B列。
图1 输入身份证号码
1.提取出生年月信息
由于上交报表时只需要填写出生年月,不需要填写出生日期,因此这里我们只需要关心身份证号码的相应部位即可,即显示为“7208”这样的信息。在D2单元格中输入公式“=IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4))”,其中:
LEN(C2)=15:检查C2单元格中字符串的字符数目,本例的含义是检查身份证号码的长度是否是15位。
MID(C2,7,4):从C2单元格中字符串的第7位开始提取四位数字,本例中表示提取15位身份证号码的第7、8、9、10位数字。
MID(C2,9,4):从C2单元格中字符串的第9位开始提取四位数字,本例中表示提取18位身份证号码的第9、10、11、12位数字。
IF(LEN(C2)=15,MID(C2,7,4),MID(C2,9,4)):IF是一个逻辑判断函数,表示如果C2单元格是15位,则提取第7位开始的四位数字,如果不是15位则提取自第9位开始的四位数字。
如果需要显示为“70年12月”这样的格式,请使用DATE格式,并在“单元格格式→日期”中进行设置。
2.提取性别信息
由于报表中各位员工的序号编排是按照上级核定的编制进行的,因此不可能按照男、女固定的顺序进行编排,如果一个一个手工输入的话,既麻烦又容易出错。
例如性别信息统一在B列填写,可以在B2单元格中输入公式“=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")”,其中:
LEN(C2)=15:检查身份证号码的长度是否是15位。
MID(C2,15,1):如果身份证号码的长度是15位,那么提取第1
www.qz26.com
5位的数字。
MID(C2,17,1):如果身份证号码的长度不是15位,即18位身份证号码,那么应该提取第17位的数字。
MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2):用于得到给出数字除以指定数字后的余数,本例表示对提出来的数值除以2以后所得到的余数。
IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女"):如果除以2以后的余数是1,那么B2单元格显示为“男”,否则显示为“女”。
回车确认后,即可在B2单元格显示正确的性别信息,接下来就是选中填充柄直接拖曳。如图2所示,现在这份报表无论是提取信息或是核对,都方便多了!
图2 提取个人信息
上海中学国际部是上海市著名的几所国际学校之一,现有学生1200多人。由于学校完全采取学生“走班制”教学,学生出勤情况的报告与统计工作难度极大。虽然每个班主任和任课老师都参与考勤信息的收集,但考勤信息的汇总和统计仍很烦琐。
由于看到负责考勤汇总统计工作的老师用Excel制作考勤汇总报表,笔者想到用Excel做一个完全自动化的考勤记录和统计系统,让这位老师从繁重的手工操作中解脱出来。
在与负责考勤的老师进行多次沟通后,笔者列出了该考勤系统必备的功能:
1.可以通过输入学号、班级或姓名检索到学生并输入考勤信息,也可以通过姓名的模糊查询检索到学生并输入考勤信息。
2.日常考勤记录可以任意排序、筛选和修改。
3.考勤信息可自动按日期分班级汇总以便输出报表。
经过尝试,笔者用Excel 2002中的表单加Visual BASIC for Application 和数据透视表相结合的方法实现了上述所有功能。
总体结构
这个考勤记录与统计系统由一个工作簿中的三张工作表组成,它们分别为“流水”、“汇总”和“名单”。“流水”工作表记录了所有日常考勤数据,该表还可直接用于记录查询(如图1所示)。“汇总”工作表可以按任意时间汇总出任意班的考勤信息(如图2所示)。“名单”工作表包含了所有学生的中英文姓名与学号,供在“流水”工作表中输入时调用(如图3所示)。
日常数据输入
输入的考勤数据全部保存在“流水”数据表中,以流水账形式排列,所以称之为“流水”。“流水”工作表设有“日期”、“班级”、“姓名”和包含各种缺勤信息的列,这些列都设置了“自动筛选”功能以便于查询。输入的数据依次添加在最后的空行中。
“流水”数据表的上方有一个[快速输入]按钮,点击此按钮可开启“考勤信息输入”窗口进行快速数据输入(如图4所示)。用此窗口进行考勤数据输入不仅方便快捷(输入者不需逐字键入学生姓名),还可以保证输入数据的准确性(班级和姓名不能有错)。此窗口的绝大多数功能是用Visual BASIC for Application编写的。
在该快速输入窗口中,“日期”由系统自动输入,学生的“学号”、“班级”和“姓名”可以各种方式组合输入。如果知道学生的完整学号,只需直接输入学号,“班级”和“姓名”会自动出现;如果知道班级,但记不清姓名,可在“班
www.qz26.com
级”下拉框中选择班级,“姓名”下拉框中将包含该班学生的名单以供点选;如果只知道姓名,则可直接输入姓名,其余信息也会自动出现;如果只知道学生的部分姓名,也可在“姓名”下拉框中输入所知道的部分姓名进行模糊查询。
日常数据查询与修改
“流水”表包含了所有日常考勤记录的数据。利用Excel自有的“自动筛选”功能(在菜单项“数据→筛选”中),不需任何代码编写,就可实现日常考勤记录的任意排序和筛选功能。用户也可以直接对“流水”表中的日常考勤数据进行修改。
数据汇总
根据日期和班级对“流水”表中的数据进行汇总是一个比较复杂的工作,好在Excel提供的数据透视表可以很好地完成这项工作,而不需编写任何代码。在数据透视表中,使用者可以通过表头中的下拉框选择要显示的班级、学生和日期。
经验总结
在学校环境中,很多工作非常烦琐,许多人的想法是用Visual BASIC和C等语言编写专用软件来简化工作,但这种方式开发耗时长,软件维护困难。其实用Excel的已有功能加不多的Visual BASIC for Application代码,就可以实现我们所需的绝大多数功能。
其实,Word 2003的许多默认设置并不适合我们使用,在此让我们看看如何修改这些默认设置让Word使用起来更加方便。
本文www.qz26.com 版权所有,未经批准转载必究