一、从身份证号码中提取出生年月。
方法:
在目标单元格中输入公式:=TEXT(MID(C3,7,8),"00-00-00")。
解读:
1、MId函数的作用为:从文本字符传中指定的起始位置返回指定长度的字符串。语法结构为:=Mid(字符串,起始位置,长度)。
2、Text函数的作用为:根据制定的数值格式将数值转换为文本。
3、公式:=TEXT(MID(C3,7,8),"00-00-00")中,首先用Mid函数提取C3单元格中从第7位开始,长度为8的字符,然后用Text函数设置成格式为“00-00-00”(暨年月日)的文本。
二、从身份证号码中提取性别。
方法:
在目标单元格中输入公式:=IF(MOD(MID(C3,17,1),2),"男","女")。
解读:
1、Mod函数的作用为:返回两数相除的余数。语法结构为:=Mod(被除数,除数),例如=Mod(6,2),返回值为0;=Mod(3,2),返回值为1。
2、If函数的作用为:判断条件是否成立,如果成立返回一个值,否则返回另外一个值。
3、公式:=IF(MOD(MID(C3,17,1),2),"男","女")中,首先利用Mid函数提取C3单元格中字符串的第17位,然后除以2,返回余数(暨Mod函数的作用,其返回的结构只有0和1两种),最后用If函数判断余数,如果为“1”,返回“男”,如果为“0”,返回“女”。
三、从身份证号码中提取年龄。
方法:
在目标单元格中输入公式:=DATEDIF(D3,TODAY(),"y")。
解读:
1、Datedif函数是系统隐藏函数,其作用为按照指定的类型计算两个日期之间的差值。语法结构为:=Datedif(开始日期,结束日期,统计方式),常见的“统计方式”有:“Y”、“M”、“D”;分别为“年”、“月”、“日”。
2、Today()函数的作用为获取当天的日期。
四、用身份证号码计算退休年龄。
方法:
在目标单元格中输入公式:=EDATE(D3,MOD(MID(C3,17,1),2)*120+600)。
解读:
1、Edate函数的作用为返回指定日期之前或之后X月的日期。语法结构为:=Edate(指定日期,月份)。
2、公式:=EDATE(D3,MOD(MID(C3,17,1),2)*120+600)中,首先用判断性别,如果为“男”性,则公式为:=Edate(D3,1*120+600),暨从出生日期算起之后的720个月(暨60年)的日期;如果为“女性”,则公式为:=Edate(D3,0*120+600),暨从出生日期算起之后的600个月(暨50年)的日期。
五、判断身份证号是否重复。
1、常规操作(错误办法)。
方法:
在目标单元格中输入公式:=IF(COUNTIF($C$3:$C$9,C3)>1,"重复","")。
解读:
1、Countif函数是单条件计数函数,其语法结构为:=Countif(条件范围,条件)。
2、利用Countif函数统计出当前值在C3:C9范围内数量,紧接着和1进行比较,并用If函数来判断,如果比较的结果成立,则返回“重复”,否则返回空值。
3、从单元格值中可以看出,两个身份证号并不重复,但是返回的结果为“重复”,Why?因为在Excel中的数字的有效位数为15位,超过15位的全部按“0”处理。而上述的两个号码中只有最后两位不同,故被Excel作为“0”处理,因此判断的结果为“重复”。
2、正确做法。
方法:
在目标单元格中输入公式:=IF(COUNTIF(C$3:C$9,C3&"*")>1,"重复","")。
解读:
1、此公式和“常规操作”的公式比较,只是在C3后添加了&"*",但能得到正确的结果,Why?
2、“*”在Excel中被称为通配符,起作用就是将当前的数字强制转换为文本,然后进行比较,从而得到了正确的结果。
六、防止身份证号重复。
方法:
1、选定目标单元格。
2、【数据】-【数据验证】,选择【允许】中的【自定义】,并在【公式】中输入:=COUNTIF(C$3:C$9,C3)=1。
3、完善提示信息并【确定】。