Excel 从身份证号种提取公司员工出生日期

某办公人员需要提取公司员工的出生日期,以便计算工龄。身份证号码从第7位~14位数字为出生日期,先用MID函数返回身份证出生日期数值,再使用TEXT函数将身份证出生日期数值转换成数值文本格式,最后使用REPLACEB函数替换出生年份,得出具体的出生日期。下面通过具体的操作步骤来详细讲解该案例。

步骤1:输入公司员工的身份证号码,然后根据需要输入其他相关数据字段,如图11-58所示。

图11-58 含有身份证号码的工作表

步骤2:选中B2单元格,在编辑栏中输入“=MID(A2,7,8)”,然后按Enter键,返回数值“19831004”,如图11-59所示。

图11-59 返回出生日期数值

步骤3:选中B2单元格,当鼠标指针移到单元格右下角变成黑色“+”时,按住左键拖动光标到单元格B20,返回所有数值,如图11-60所示。

图11-60 返回所有出生日期数值

步骤4:选中C2单元格,在编辑栏中输入“=TEXT(B2,”0000-00-00″)”函数,按Enter键,返回数值文本“1983-10-04”,如图11-61所示。

步骤5:选中C2单元格,当鼠标指针移到单元格右下角变成黑色“+”时,按住左键拖动光标到单元格C20,返回所有数值文本,如图11-62所示。

步骤6:选中D2单元格,在编辑栏中输入“=REPLACEB(C2,1,5,””)”函数,按Enter键,返回数值文本“10-04”,如图11-63所示。

步骤7:选中D2单元格,当鼠标指针移到单元格右下角变成黑色“+”时,按住左键拖动光标到单元格D20,返回所有数值文本,如图11-64所示。

图11-61 返回出生日期文本

图11-62 返回所有出生日期文本

图11-63 返回出生具体日期

图11-64 返回所有出生具体日期

Excel 根据姓名查找身份证号:LOOKUP函数

如果需要从向量中查找一个值,可使用LOOKUP函数。此时在单行区域或单列区域(称为“向量”)中查找值,然后返回第二个单行区域或单列区域中相同位置的值。

LOOKUP函数的语法为:=LOOKUP(lookup_value,lookup_vector,result_vector),各参数的含义介绍如下。

※ lookup_value:函数在第一个向量中搜索的值。

※ lookup_vector:指定检查范围,只包含一行或一列的区域。lookup_vector中的值必须以升序排列:…,-2, -1, 0, 1, 2, …, A~Z, FALSE, TRUE。否则,函数可能无法返回正确的值。而大写的文本和小写文本是等同的。

※ result_vector:指定函数返回值的单元格区域,只包含一行或一列的区域。下面以根据姓名查找身份证号码为例,介绍LOOKUP函数的使用方法。

01 打开工作表,在其中输入姓名、身份证号等数据。

02 在“A11”单元格中输入要查询其身份证号的员工姓名,作为查询条件。

03 在单元格中输入公式:=LOOKUP (A11, A2:A8,B2:B8),按下“Enter”键确认,即可得到A11单元格中员工姓名对应的身份证号了。

alt

Excel 从身份证号中提取出生日期和性别:MID、TRUNC函数

使用MID和TRUNC函数可以从身份证号中快速提取出生日期和性别。

※ MID函数的语法为:=MID(text, start_num, num_chars),其中3个参数都为必需项。参数“text”包含要提取字符的文本字符串;参数“start_num”为文本中要提取的第一个字符的位置;参数“num_chars”用于指定希望MID从文本中返回字符的个数。

※ TRUNC函数的语法为:= TRUNC(number, [num_digits]),其中参数“number”为必需项,表示需要截尾取整的数字;参数“num_digits”为可选项,用于指定取整精度的数字,num_digits的默认值为0(零)。

具体操作步骤如下。

01 选中需要输入身份证号的单元格区域,在“开始”选项卡中单击“数字格式”下拉列表框,选择“文本”格式。

02 输入身份证号后选中“D2”单元格,输入表达式=MID(B2,7,4)&”年”&MID(C2,11,2)&”月”&MID(C2,13,2)&”日”后确认,得到计算结果,然后使用填充柄将公式复制到本列的其他单元格中。

alt

03 选中“E2”单元格,输入函数表达式:=IF(MID(C2,17,1)/2=TRUNC(MID(C2,17,1)/2),”女”,”男”),按下“Enter”键即可得到学生性别。

04 选中E2单元格,使用填充柄复制公式,即可计算出其他学生的性别。

alt

Excel 隐藏号码只显示身份证号码后四位数:CONCATENATE、RIGHT和REPT函数实现

为了保证用户的账户安全,一些常用的证件号码,如身份证、银行卡号码等,可以只显示后面四位号码,其他号码用星号代替。此时可通过CONCATENATE、RIGHT和REPT函数实现。

例1:将保险号码的后四位数与“***-**-”文本字符串合并

01 在“B2”单元格中输入完整的保险号码,本例输入“162-54-5679”。

02 在需要显示结果的单元格中输入公式:=CONCATENATE(“***-**-“,RIGHT(B2,4)),然后按下“Enter”键确认,得到结果“***-**-5679”。

例2:将字符串“****-”重复3次的结果与信用卡号码后四位合并

01 在“B2”单元格中输入信用卡号码,本例输入“9558-4698-8259-6425”。

02 在需要显示结果的单元格中输入公式:=CONCATENATE(REPT(“****-“,3),RIGHT(B2,4)),按下“Enter”键确认得到结果“****-****-****-6425”。

Excel 怎样根据身份证号码计算其男女性别?

身份证号码中包含了持有人的性别信息,能否在输入身份证号码后让性别自动产生?

解题步骤

身份证号码的倒数第2位数字代表性别,该值是奇数时代表持有人的性别为男,否则为女。基于此原则,利用MID函数提取身份证号码中的第17位数,然后使用MOD函数判断该值的奇偶性即可。以图7.124为例,获取性别的操作步骤如下。

图7.124 职工信息表

1.在C2单元格录入以下公式:

2.双击C2单元格,使公式自动向下填充,生成的性别如图7.125所示。

图7.125 批量提取性别

知识扩展

1.表达式“MID(B2,17,1)”用于提取身份证号码中的第 17 位数字,MOD 函数则用于计算此数字除以2的余数,余数只有0或1两种情况,当余数是1时,IF函数的第一参数返回True,表示IF函数的条件成立,因此公式“=IF(MOD(MID(B2,17,1),2),"男","女")”的最终结果为“男”。

2.我国的身份证号码最先使用的是15位数字,然后15位和18位并存,现在已经只有18位的身份证号码,因此不需要再考虑15位的问题。

3.当多个函数嵌套时,公式中会有多级括号,Excel总是从里层括号向外开始运算,因此理解公式的含义时也应该从里向外。对于同一层级的表达式,则遵循四则混合运算的顺序,同级别的先左后右,加、减属于同级别运算,乘、除属于同级别运算,但高于加、减运算。

Excel 能用身份证号码计算出年龄吗?

图7.115中B列是职员的身份证号码,由于身份证号码中包含了号码所有者的出生日期,因此要求利用身份证号码计算身份证持有人的年龄。

图7.115 职员信息表

解题步骤

身份证号码中的第7位到第14位属于出生日期,因此使用MID函数从身份证号码中提取生日,然后用它与今天的日期比较就得到年龄了。具体操作步骤如下。

1.在C2单元格中输入以下公式:

2.双击C2单元格的填充柄,从而使公式自动向下填充,公式的计算结果如图7.116所示。

图7.116 根据身份证号码计算年龄

知识扩展

1.身份证号码的前6位代表地区,地区右边的8位代表出生年月日,因此本例采用MID函数从身份证的第7位开始,一共提取7位数字出来,然后通过TEXT函数转换成日期样式。

例如,第一个身份证号的生日是19770316,使用TEXT函数转换后的结果为“1977-03-16”。如果不转换格式,DATEDIF函数无法识别此日期。

2.TODAY函数用于生成今天的日期,没有参数。

3.DATEDIF 函数用于计算两个日期之间的间隔时间,单位可以是年,也可以是月或天。DATEDIF函数的语法如下:

第一参数代表起始日期,第二参数代表结束日期,第三参数用于指定日期单位。

第三参数的取值范围与含义见表7.30

表7.3 unit参数说明

表7.3中说明了DATEDIF函数第三参数的6种用法,实际常用的只有第一种和第二种。

=DATEDIF("2012-3-1","2016-4-2","Y")——计算结果4,代表两个日期相差4年;

=DATEDIF("2012-3-1","2016-4-2","M")——计算结果49,代表两个日期相差49个月;

=DATEDIF("2012-3-1","2016-4-2","YD")——计算结果32,代表两个日期相差32天,忽略年,相当于只计算3月1日到4月2日之间的日期差

在本例中,DATEDIF的作用在于计算身份证号中的日期与今天之间的年份差异。

Excel 如何限制单元格只能输入身份证号码?

下图中B列只能输入身份证号码,禁止输入手机号码等其他数据,也禁止输入不符合规则的身份证号码。如何才能实现?

解题步骤

身份证号码都有固定的规则,不按规则输入的都禁止输入即可。使用公式计算B列的值是否符合规则,然后在数据验证中加以限制,具体操作步骤如下。

1.在I2输入以下公式:

2.将公式向下填充到I11,然后隐藏I列,避免意外删除公式。

3.选择B2:C11区域,然后单击功能区的“数据”→“数据验证”,弹出“数据验证”对话框。

4.在“数据验证”对话框中将“允许”下拉列表的默认值“任何值”修改为“自定义”,然后在公式框中输入公式“=i2”,操作界面如图3.74所示。

5.打开“出错警告”选项卡,并按图3.75的方式指定警告信息。

图3.74 设置数据验证的条件与公式

图3.75 设置出错警告

6.单击“确定”按钮保存设置,同时返回工作表界面。

7.在B2单元格输入身份证号码“'330401197502177647”,当单击Enter键后Excel不会产生任何提示,表示输入的号码符合规则。

此处要注意身份证号码前面必须有半角状态下的撇号,否则身份证号码的最后3位数字有可能丢失。

之所以说有可能丢失而不是一定会丢失,是因为部分特殊身份证号码以X结尾,这种号码本身属于文本,和超长数值的性质不同。

8.在B3单元格输入身份证号码“'750423199407146087”,当单击Enter键后Excel会弹出如图3.76所示的警告信息,因为身份证号码没有以75开头的,只有以15、35、45和65开头的。

图3.76 首位数字录入有误产生的警告

9.单击“重试”按钮,然后重新输入身份证号码“'4504231994071460871”,当单击Enter键后Excel会弹出如图3.77所示的警告信息,因为此身份证号码尽管前12位没有问题,但是其长度为19位,超过了标准长度。

图3.77 字符长度超过18位产生的警告

10.单击“重试”按钮,然后重新输入身份证号码“'4504231994077460871”,当单击Enter键后Excel会弹出如图3.78所示的警告信息,代表日期的8位数字“19940774”格式有误,一个月的天数上限是31,而此处输入的值是74。

图3.78 日期格式错误产生的警告

知识扩展

1.我国的身份证号码在10多年以前采用的15位数字,现在改成了18位,其中前6位用于说明身份证持有人所在地区的信息,第7位到第14位表示身份证号码持有人的出生年月日,第15位到第17位表示顺序码,即同一地区同一日期有多人出生时,使用顺序码来区分,第18位是校验码,校验前面的数字否是正确,有计算规律。

2.我国身份证号码的前两位按表3.1所示的方式编码。

表3.1 身份证的地区码一览

从表3.1中可以看出四川省的身份证号码是以51开头的,吉林省的身份证号码是以22开头的,湖北的身份证号码则是以42开头。如果某身份证号码以7开头则说明该号码一定有误。

3.身份证号码的第7位到第14位用于说明持有人的出生日期,因此不可能小于“19010101”也不可能大于今天的日期。

4.本例的数据验证公式使用了AND函数限制4个条件必须同时满足,否则就禁止输入。

=AND(LEN(B2)=18,OR(LEFT(B2,2)={"11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","81","82"}),AND(MID(B2,7,8)>"19010101",MID(B2,7,8)<=TEXT(NOW(),"yyyymmdd")),ISNUMBER(TEXT(MID(B2,7,8),"0000-00-00")*1))

公式中的“LEN(B2)=18”表示身份证号码只允许长度为18位,否则不符合规则。公式中的“OR(LEFT(B2,2)={"11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","81","82"})”表示身份证号码的前两位必须是 11、12、13、14、15、21、22、23、31、32、33、34、35、36、37、41、42、43、44、45、46、50、51、52、53、54、61、62、63、64、65、81、82 中的一个,只要满足条件之一即可,这是OR函数的功能。

公式中的“AND(MID(B2,7,8)>"19010101",MID(B2,7,8)<=TEXT(NOW(),"yyyymmdd")))”表示从身份证号码的第7位开始、提取出来的8位数必须大于“19010101”,同时小于等于今天的日期,两个条件必须同时满足,这是AND函数的功能。其中NOW函数用于产生当前时间值,而TEXT函数则负责将时间值转换成与身份证号码中代表日期的数字同样的格式,便于比较。

公式中的“ISNUMBER(TEXT(MID(B2,7,8),"0000-00-00")*1)”表示从身份证号码的第7位开始、提取出来的8位数必须是日期。判断一个8位数是否为日期的方法是:使用Text函数转换成“0000-00-00”格式,然后将它乘以 1,如果返回值是数值,表示它是日期,如果返回值是错误值,则表示不是日期。例如,公式“=ISNUMBER(TEXT(19870218,"0000-00-00")*1)”的运算结果为True,而公式“=ISNUMBER(TEXT(19870248,"0000-00-00")*1)”的运算结果为False,因为1987年2月只有28天,不存在48天,因此此数字不能代表日期。

当输入的身份证号码同时满足以上4个条件时,Excel将不会禁止用户输入当前号码。

5.数据验证的公式有所限制,禁止在公式中使用常量数组,因此本例没有在数据验证对话框中直接输入公式,而是将公式写在辅助区域中,然后在数据验证对话框中检查辅助区域是否等于True即可。

6.输入汉字、英文单词、标点符号、长度不等于18位等情况都会被阻止,但是粘贴单元格则不会被阻止,因此为了提升输入数据的准确性,使用了数据验证的区域应采用手工输入方式。

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。

Excel 如何避免输入身份证号码后丢失部分字符

在单元格中输入身份证号码时,单元格会将身份证号码显示为科学记数法,如6.543E+17,同时还会丢失后面几位数值。例如,在单元格中输入 654300199103073299 后自动变成654300199103073000,效果如图3.59所示:

消失后几位数字的身份证号码

图3.59 消失后几位数字的身份证号码

要如何才能让身份证号码显示完整呢?

解题步骤

Excel会在单元格中的数值长度大于等于12位时显示为科学记数法,从而减少数值的长度。身份证号码包含15位和18位两种形式,不管哪种形式都会显示为科学记数法。

Excel的数值计算精度是15位,显示精度也是15位,当数值超过15位时,Excel不能正确显示15位以后的值,而是以0占位,因此在图3.59中输入654300199103073299后会自动变成654300199103073000,右边3位数不管原来是什么都会变成0。

解决以上两个问题可采用同一个方法——输入身份证号码之前先录入半角状态的单引号“'”。当输入“'654300199103073299”后单元格会显示为图3.60所示的效果。

完整显示的身份证号码

图3.60 完整显示的身份证号码

知识扩展

1.身份证号码是不需要参与数值运算的,因此以文本形式输入单元格中并不会带来负面影响,但可以解决本疑难中的两个问题。

2.将身份证号码以文本形式输入单元格后,单元格的左上角会显示一个绿色的倒三角符号,如果想关闭该符号,可以选中单元格后单击单元格左方的箭头,然后从弹出的下拉菜单中选择“忽略错误”。

3.对于身份证号码丢失最后3位数值的问题,只能前期预防,无法后期补救,对于已经输入单元格且已经丢失3位数值的身份证号码,没有任何办法找回丢失的数值,只能重新输入。

4.半角状态和全角状态的单引号有着本质区别,并非仅仅粗细不同。半角符号可将数值转换成文本,但是符号本身不会显示出来;全角撇号也可以将数值转换成文本,但是符号本身会显示在单元格中,而且会影响此单元格的数据参与运算。图3.61中是两种形式的撇号对比。

半角撇号与全角撇号的区别

图3.61 半角撇号与全角撇号的区别

请在封面中缝指定的QQ群下载文件和视频教材,从而方便练习,同时验证本案例中的技巧与操作结果。