发布网友 发布时间:2022-04-24 20:34
共2个回答
热心网友 时间:2023-10-10 02:34
这是原来搜集的一些方法,自己试一下,
老人成年儿童,这个用IF函数就能解决,
15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。
18位身份证号码:第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。
这里,我们需要使用IF、LEN、MOD、
MID、DATE等函数从身份证号码中提取个人信息。其中员工的身份证号码信息已输入完毕(C列),出生年月信息填写在D列,性别信息填写在B列。
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位,那么提取第15位的数字。
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单元格显示正确的性别信息,接下来就是选中填充柄直接拖曳。现在这份报表无论是提取信息或是核对,都方便多了!
这是根据身份证号码(15位和18位通用)自动提取性别和出生年月的自编公式:
说明:公式中的B2是身份证号
1、根据身份证号码求性别: =IF(LEN(B2)=15,IF(MOD(VALUE(RIGHT(B2,3)),2)=0,"女","男"),IF(LEN(B2)=18,IF(MOD(VALUE(MID(B2,15,3)),2)=0,"女","男"),"身份证错"))
2、根据身份证号码求出生年月日: =IF(LEN(B2)=15,CONCATENATE("19",MID(B2,7,2),"-",MID(B2,9,2),"-",MID(B2,11,2)),IF(LEN(B2)=18,CONCATENATE(MID(B2,7,4),"-",MID(B2,11,2),"-",MID(B2,13,2)),"身份证错"))
3、根据身份证号码求年龄: =IF(LEN(B2)=15,year(now())-1900-VALUE(MID(B2,7,2)),if(LEN(B2)=18,year(now())-VALUE(MID(B2,7,4)),"身份证错"))
其他通用公式:(新旧身份证号通用)
(1)、根据“身份证号”获得“年龄”
A1为身份证号,
B1中输入公式
=DATEDIF(TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00"),TODAY(),"y")
(2)、根据出生“年-月-日”获得“年龄”
B1为出生日期,
C1中输入公式
=INT((TODAY()-B1)/365)
或者
=DATEDIF(B1,TODAY(),"Y")
判断身份证格式是否正确:
B1为身份证号,
C1中输入公式
=IF(OR(LEN(B1)=18,LEN(B1)=15),IF(LEN(B1)=18,IF(OR(MONTH(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,11,2)),DAY(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,13,2))),"月日错误",""),IF(LEN(B1)=15,IF(OR(MONTH(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,9,2)),DAY(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,11,2))),"月日错误",""))),"身份证位数不对")&IF(AND(LEN(B1)=18,1*MID(B1,7,4)>YEAR(TODAY())-6),"年份错误","")
假设C2为身份证号,输入公式
=IF(LEN(C2)=15,19&MID(C2,7,6),MID(C2,7,8))
这是获得出生日期
=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")
热心网友 时间:2023-10-10 02:34
发我Q邮箱,号9位数