EXCEL身份证号码计算出生年月年龄及性别和重名筛选
在学校的人事管理中经常会遇到需要统计教职工的年龄的问题,但案头的原始资料只有身份证号码,其实这足够了。在EXCEL中,引用其内置函数利用身份证号码达到此目的比较简单。
1、身份证号码简介(18位):
1~6位为地区代码;7~10位为出生年份;11~12位为出生月份;13~14位为出生日期;15~17位为顺序号,并能够判断性别,奇数为男,偶数为男;第18位为校验码。
2、确定“出生日期”:
18位身份证号码中的生日是从第7位开始至第14位结束。提取出来后为了计算“年龄”应该将“年”“月”“日”数据中添加一个“/”或“-”分隔符。
①正确输入了身份证号码。(假设在D2单元格中)
②将光标定位在“出生日期”单元格(E2)中,然后在单元格中输入函数公式“=MID(D2,7,4)&"-"
&MID(D2,11,2)&"-"&MID(D2,13,2)”即可计算出“出生日期”。
关于这个函数公式的具体说明:MID函数用于从数据中间提取字符,它的格式是:MID(text,starl_num,num_chars)。
Text是指要提取字符的文本或单元格地址(上列公式中的D2单元格)。
starl_num是指要提取的第一个字符的位置(上列公式中依次为7、11、13)。
num_chars指定要由MID所提取的字符个数(上述公式中,提取年份为4,月份和日期为2)。
多个函数中的“&”起到的作用是将提取出的“年”“月”“日”信息合并到一起,“/”或“-”
分隔符则是在提取出的“年”“月”“日”数据之间添加的一个标记,这样的数据以后就可以作为日期类型进行年龄计算。操作效果如下图:
3、确定“年龄”:
“出生日期”确定后,年龄则可以利用一个简单的函数公式计算出来了:将光标定位在“年龄”单元格中,然后在单元格中输入函数公式“=INT((TODAY()-E2)/365)”即可计算出“年龄”。
关于这个函数公式的具体说明:
①TODAY函数用于计算当前系统日期。只要计算机的系统日期准确,就能立即计算出当前的日期,它无需参数。操作格式是TODAY()。
②用TODAY()-E2,也就是用当前日期减去出生日期,就可以计算出这个人的出生天数。
③再除以 “365”减得到这个人的年龄。
④计算以后可能有多位小数,可以用【减少小数位数】按钮,将年龄的数值变成“整数”,也可在公式= (TODAY()-E2)/365中再嵌套一个
“INT”函数取整数,即“ =INT((TODAY()-E2)/365)”,这样就会自动将后面的小数去掉,只保留整数部分。操作效果如下图:
4、确定“性别”:
mid函数提取年月日每个人的性别可以利用“身份证号码”进行判断,18位身份证号码中,第15~17位为顺序号,奇数为男,偶数为女。
将光标定位在“性别”单元格中,然后在单元格中输入函数公式“=IF(VALUE(MID(D2,15,3))/2=INT(VALUE(MID(D2,15,3))/2),"女","男")”即可计算出“性别”。
关于这个函数公式的具体说明:
①函数公式中,MID(D2,15,3)的含义是将身份证中的第15~17位提取出来。
②VALUE(MID(D2,15,3))的含义是将提取出来的文本数字转换成能够计算的数值。
③VALUE(MID(D2,15,3))/2=INT(VALUE(MID(D2,15,3))/2)的含义是判断奇偶。(“INT”在上面说过是取整函数,如果是偶数,则前后相等;如果是奇数,则前后不相等。)
④=IF(VALUE(MID(D2,15,3))/2=INT(VALUE(MID(D2,15,3))/2),"女","男")的含义是若是“偶数”就填写“女”,若是“奇数”就填写“男”。操作效果如下图:
确定性别 =IF(VALUE(MID(E7,15,3))/2=INT(VALUE(MID(E7,15,3))/2),"女","男")
确定出生日期 =MID(E7,7,4)&"-"&MID(E7,11,2)&"-"&MID(E7,13,2)
确定年龄 =2010-IF(LEN(C3)=18,MID(C3,7,4),"19"&MID(C3,7,2))
九九乘法表公式: =IF(B$1>$A2,"",B$1&"*"&$A2&"="&B$1*$A2)
重名筛选 =countif(B:B,B2)
重 名 筛 选
1、在表中插入一列“重名统计”,假设为E列。
2、在插入列(如E2单元格)输入“=COUNTIF(B:B,B2)”。
3、复制E2单元格公式到最后一行。
4、使用自动筛选,E列值大于1的就是重名的了
先按b列排序,在b列后插入一行在c2输入=if(b2<>b1,1,2)
向下复制公式,然后复制c列,"选择性粘贴-数值",
再按c列排序,删除所有值为2的行
或用以下方法
在b列后插入一行在,在c1输入=COUNTIF($B$1:INDIRECT("B"&ROW()),B1),向下复制公式,然后复制c列,"选择性粘贴-数值",
再按c列排序,删除所有值大于1的行
=IF(COUNTIF($A$1:$A$200,A1)>1,"重复","")
或者设置条件格式=COUNTIF($A$1:$A$200,A1)>1
点击“工具→宏→Visual Basic编辑器”,进入VBA开发环境,点击“插入→模块”,这时出现代码窗口,在其中输入下列代码:
Sub tmtx()
Sheets("sheet2").[a1] = "身份证"
Sheets("sheet2").[b1] = "姓名"
a=sheets("sheet1").[a1].CurrentRegion.Rows.Count ‘判断学生名单的行数。
For i = 2 To a
k = Sheets("sheet2").[a1].CurrentRegion.Rows.Count + 1
If Application.WorksheetFunction.CountIf([c1:c65530], Cells(i, 3)) > 1 Then
Sheets("sheet2").Cells(k, 2) = Sheets("sheet1").Cells(I, 3)
Sheets("sheet2").Cells(k, 1) = Sheets("sheet1").Cells(I, 2)
End If
‘使用CountIf()函数对每个名字进行判断,如果CountIf()值大于1,则将其复制到Sheet2。
Next
Sheets("sheet2").[a1].CurrentRegion.Sort Key1:=Sheets("sheet2").[b1], Order1:=xlAscending, Header:=xlGuess
‘对复制到Sheet2的内容以“姓名”作为关键字排序,从而实现同名同姓的姓名排在一起,以方便查阅。
If Sheets("sheet2").[a2] = "" Then
MsgBox“无同名同姓学生!”,“报告”
End If
‘如果没有同名同姓的,则跳出报告信息窗口。
Sheets("sheet2").Select
End sub
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论