身份证正确检验及验证公式
验证身份证号是否正确的公式、通过身份证号提取出生年月、性别、年龄等的公式汇总
身份证号验证:=IF(LEN(身份证号所在单元格)=0,"空",IF(LEN(身份证号所在单元格)=15,"老号",IF(LEN(身份证号所在单元格)<>18,"位数不对",IF(CHOOSE(MOD(SUM(MID(身份证号所在单元格,1,1)*7+MID(身份证号所在单元格,2,1)*9+MID(身份证号所在单元格,3,1)*10+MID(身份证号所在单元格,4,1)*5+MID(身份证号所在单元格,5,1)*8+MID(身份证号所在单元格,6,1)*4+MID(身份证号所在单元格,7,1)*2+MID(身份证号所在单元格,8,1)*1+MID(身份证号所在单元格,9,1)*6+MID(身份证号所在单元格,10,1)*3+MID(身份证号所在单元格,11,1)*7+MID(身份证号所在单元格,12,1)*9+MID(身份证号所在单元格,13,1)*10+MID(身份证号所在单元格,14,1)*5+MID(身份证号所在单元格,15,1)*8+MID(身份证号所在单元格,16,1)*4+MID(身份证号所在单元格,17,1)*2),11)+1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RIGHT(身份证号所在单元格,1)*1),RIGHT(身份证号所在单元格,1)*1,"X"),"正确","错误"))))性别:=IFERROR(IF(MOD(VALUE(MID(身份证号所在单元格,17,1)),2)=1,"男","女"),"")年龄:=IFERROR(YEAR(NOW())-VALUE(MID(身份证号所在单元格,7,4)),"")出生年月日:=CONCATENATE(MID(身份证号所在单元格,7,4),"-",MID(身份证号所在单元格,11,2),"-",MID(身份证号所在单元格,13,2))是否农村青壮年(女16至45、男16至50):=IF(户口性质<>"农业户口","否",IF(AND(性别="女",G4>=16,G4<=45),"是",IF(AND(性别="男",G4>=16,G4<=50),"是","否")))照片插入:第一步:新建一寸照文件夹为“目标文件夹”,照片命名例:99人以内(01+姓名),999人以内(001+姓名)第二步:在基础信息表内输入公式:=”照片源地址”&\”&序号栏&姓名栏&”.jpg”输入公式后,把公式内所有的“\”都换为“\\”;序号要求:99人以内从01开始,999人以内从001开始;第三步:到WORD文档,建立表格,并使光标在照片格“插入”→“文档部件”→“域”→“includepicture”→域属性输入“123”→FN+ALT+F9→把先前输入的“123”删除,在邮件合并内找输入合并域,选择“照片栏”→FN+F9。
EXCEL中如何提取身份证出生日期和性别信息以及检验身份证号码的正确性
1、检验身份证号码的正确性(1)录入前可以通过下面操作避免录入错误通用公式为:=IF(LEN(D6)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(D6,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT ("1:17")))),11)+1,1)=RIGHT(D6),IF(LEN(D6)=15,ISNUMBER(--TEXT(19&MID(D6,7,6),"#-00-00"))))你也可以将上述公式放在数据有效性中,防止录入错误的身份证号。
操作方法:选择需要输入身份证的全部单元格区域,比如D6:A10,点菜单"数据"-"有效性",在"允许"的下拉框中选择"自定义",在"公式"输入上面的15位和18位通用公式,确定以后即可。
注意:公式里的"D6"是你刚才选定要输入身份证的单元格区域的第一个单元格,如果你是要在C3:C20输入身份证号,则将公式里的"D6"改为"C3"。
另外,你也可以先设置好某单个单元格的数据有效性(这时公式的D6改为选定的单元格),再用格式刷将其格式刷到其他需要相同设置的单元格。
(2)录入后可以通过下面操作检测录入错误通用公式为:=IF(LEN(D6)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(D6,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(D6),IF(LEN(D6)=15,ISNUMBER(--TEXT(19&MID(D6,7,6),"#-00-00"))))将上面的公式放到B2单元格,如果结果为TRUE,则身份证号是正确的,结果为FALSE则是错误的。
身份证号码的规则及验证原理
⾝份证号码的规则及验证原理【⾝份证号码的规则】1、15位⾝份证号码组成:ddddddyymmddxxs共15位,其中:dddddd为6位的地⽅代码,根据这6位可以获得该⾝份证号所在地。
yy为2位的年份代码,是⾝份证持有⼈的出⾝年份。
mm为2位的⽉份代码,是⾝份证持有⼈的出⾝⽉份。
dd为2位的⽇期代码,是⾝份证持有⼈的出⾝⽇。
这6位在⼀起组成了⾝份证持有⼈的出⽣⽇期。
xx为2位的顺序码,这个是随机数。
s为1位的性别代码,奇数代表男性,偶数代表⼥性。
2、18位⾝份证号码组成:ddddddyyyymmddxxsp共18位,其中:其他部分都和15位的相同。
年份代码由原来的2位升级到4位。
最后⼀位为校验位。
校验规则是:(1)⼗七位数字本体码加权求和公式S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和Ai:表⽰第i位置上的⾝份证号码数字值Wi:表⽰第i位置上的加权因⼦Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2(2)计算模Y = mod(S, 11)(3)通过模得到对应的校验码Y: 0 1 2 3 4 5 6 7 8 9 10校验码: 1 0 X 9 8 7 6 5 4 3 2也就是说,如果得到余数为1则最后的校验位p应该为对应的0.如果校验位不是,则该⾝份证号码不正确。
以下为js版本的校验实例。
<script language="javascript"><!--var powers=new Array("7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2");var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");var sex="male";//校验⾝份证号码的主调⽤function validId(obj){var _id=obj.value;if(_id=="")return;var _valid=false;if(_id.length==15){_valid=validId15(_id);}else if(_id.length==18){_valid=validId18(_id);}if(!_valid){alert("⾝份证号码有误,请检查!");obj.focus();return;}//设置性别var sexSel=document.getElementById("sex");var options=sexSel.options;for(var i=0;i<options.length;i++){if(options[i].value==sex){options[i].selected=true;break;}}}//校验18位的⾝份证号码function validId18(_id){_id=_id+"";var _num=_id.substr(0,17);var _parityBit=_id.substr(17);var _power=0;for(var i=0;i< 17;i++){//校验每⼀位的合法性if(_num.charAt(i)<'0'||_num.charAt(i)>'9'){return false;break;}else{//加权_power+=parseInt(_num.charAt(i))*parseInt(powers[i]);//设置性别if(i==16&&parseInt(_num.charAt(i))%2==0){sex="female";}else{sex="male";}}}//取模var mod=parseInt(_power)%11;if(parityBit[mod]==_parityBit){return true;}return false;}//校验15位的⾝份证号码function validId15(_id){_id=_id+"";for(var i=0;i<_id.length;i++){//校验每⼀位的合法性if(_id.charAt(i)<'0'||_id.charAt(i)>'9'){return false;break;}}var year=_id.substr(6,2);var month=_id.substr(8,2);var day=_id.substr(10,2);var sexBit=_id.substr(14);//校验年份位if(year<'01'||year >'90')return false;//校验⽉份if(month<'01'||month >'12')return false;//校验⽇if(day<'01'||day >'31')return false;//设置性别if(sexBit%2==0){sex="female";}else{sex="male";}return true;}//--></script><input type="text"onblur="validId(this)"maxlength=18 size=18> <select id="sex"><option value="male">男</option><option value="female">⼥</option>。
身份证验证规则
⾝份证验证规则⾝份证解析规则: 1-6位:表⽰⾏政区划的代码。
1、2位,所在省(直辖市,⾃治区)代码; 3、4位,所在地级市(⾃治州)代码; 5、6位,所在区(县,⾃治县,县级市)的代码; 7-14位:表⽰出⽣年、⽉、⽇ 15-16位:所在地派出所代码 17位:性别。
奇数(1、3、5、7、9)男性,偶数(2、4、6、8、0)⼥性 18位:校验位,存在⼗⼀个值:0,1,2,3,4,5,6,7,8,9,X,其值是⽤固定公式根据前⾯⼗七位计算出来的。
18位验证算法如下: 1、将前⾯的⾝份证号码17位数分别乘以不同的系数。
从第⼀位到第⼗七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、⽤加出来和除以11,看余数是多少。
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。
其分别对应的最后⼀位⾝份证的号码为1-0-X -9-8-7-6-5-4-3-2。
(即余数0对应1,余数1对应0,余数2对应X...) 5、通过上⾯得知如果余数是3,就会在⾝份证的第18位数字上出现的是9。
如果对应的数字是2,⾝份证的最后⼀位号码就是罗马数字x。
例如: 某男性的⾝份证号码为【530102************】,我们看看这个⾝份证是不是合法的⾝份证。
⾸先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+ (1*2)】是189。
然后⽤189除以11得出的结果是189/11=17----2,也就是说其余数是2。
最后通过对应规则就可以知道余数2对应的检验码是X。
所以,可以判定这是⼀个正确的⾝份证号码。
关于身份证号码最后一位的校验码的算法
关于身份证号码最后一位的校验码的算法关于身份证号码最后一位的校验码的算法我国现行使用公民身份证号码有两种尊循两个国家标准,〖GB 11643-1989〗和〖GB 11643-1999〗。
〖GB 11643-1989〗中规定的是15位身份证号码:排列顺序从左至右依次为:六位数字地址码,六位数字出生日期码,三位数字顺序码,其中出生日期码不包含世纪数。
〖GB 11643-1999〗中规定的是18位身份证号码:公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。
顺序码的奇数分给男性,偶数分给女性。
校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
公式如下:∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (1)"*" 表示乘号i--------表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。
a[i]-----表示身份证号码第 i 位上的号码W[i]-----表示第 i 位上的权值 W[i] = 2^(i-1) mod 11计算公式 (1) 令结果为 R根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。
R 0 1 2 3 4 5 6 7 8 9 10C 1 0 X 9 8 7 6 5 4 3 2由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。
以下为列子*-----------------------------**此函数功能:输入的15位或17位或18位的身份证号,返回校验后的最后一位**-----------------------------FUNCTION sfzjyParameters cIDDO CASECASE LEN(ALLTRIM(cID)) = 15cID = STUFF(ALLTRIM(cID),7,0,"19")CASE LEN(ALLTRIM(cID)) = 18 OR LEN(ALLTRIM(cID)) = 17cID =LEFT(ALLTRIM(cID),17)OTHERWISERETURN .F.ENDCASEIf Len(ALLTRIM(cID))#17Return .f.EndifnSum=Val(SubStr(cID,1,1)) * 7 ;+ Val(SubStr(cID,2,1)) * 9 ;+ Val(SubStr(cID,3,1)) * 10 ;+ Val(SubStr(cID,4,1)) * 5 ;+ Val(SubStr(cID,5,1)) * 8 ;+ Val(SubStr(cID,6,1)) * 4 ;+ Val(SubStr(cID,7,1)) * 2 ;+ Val(SubStr(cID,8,1)) * 1 ;+ Val(SubStr(cID,9,1)) * 6 ;+ Val(SubStr(cID,10,1)) * 3 ;+ Val(SubStr(cID,11,1)) * 7 ;+ Val(SubStr(cID,12,1)) * 9 ;+ Val(SubStr(cID,13,1)) * 10 ;+ Val(SubStr(cID,14,1)) * 5 ;+ Val(SubStr(cID,15,1)) * 8 ;+ Val(SubStr(cID,16,1)) * 4 ;+ Val(SubStr(cID,17,1)) * 2*计算校验位check_number=INT((12-nSum % 11)%11)If check_number=10check_number='X'EndifReturn check_numberEndfunc*-----------------------------**此函数功能:输入的15位或18位身份证号,返回正确的18位的身份证号。
Excel中检测输入的身份证号码是否合法函数校验方法大揭秘
Excel中检测输⼊的⾝份证号码是否合法函数校验⽅法⼤揭秘什么时候需要校验⾝份证号码合法性呢?1.防⽌输⼊⼈员随⼿输⼊⼀个18位数字冒充⾝份证号码2.防⽌输⼊⼿误,有时候并⾮故意输错注意本⽅法⽆法检测⾝份证是否真实存在,只能从格式上检查号码是否合法⾝份证号码校验基本原理第1步:把号码的前17位分别乘以不同的系数,系数表如下第1步第2步:把17位数字和系数相乘的结果相加,加和值再除以11,取其余数。
⽤得到的余数与⾝份证第18位号码进⾏对照,余数与⾝份证号码第18位对应关系如下表第2步例如例如:某男⼠的⾝份证号码是622924************。
⾸先我们得出前17位与系数的乘积和是320,除以11的余数是1,对应第18位数是0。
所以这是⼀个不合法的⾝份证号码。
判断⾝份证号码是否合法的函数公式计算第18位数=IF(LEN($C2)=18,MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1),"长度错误")判断是否合法=IF(LEN($C2)=18,IF(MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)=RIGHT($C2,1),"合法","不合法"),"长度错误")其中,C2为⾝份证号码,$B$2:$B$18为第1到17个系数。
这个⼀般存到另⼀个sheet⾥或者顶⼀个名称,与实际使⽤的表分开函数分步讲解VALUE(MID($C2,ROW($1:$17),1))ROW函数返回⼀个1到17的数组,配个mid函数依次取出C2号码中前17个数字,并将截取的⽂本⽤value转换为数值SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤SUMPRODUCT函数返回MID($C2,ROW($1:$17),1)数组和$B$2:$B$18(校验表)区域对应相乘的和MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤mod对上⼀步求乘积之取11的余数MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)⽤MID函数截取10X98765432中的1位数,即⾝份证号码的第18位。
身份证正确检验及验证公式
身份证正确检验及验证公式验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SU M(LEFT(RIGHT(H20,18))*7+LEFT(RIGHT(H20,17))*9+LEFT(RIGHT( H20,16))*10+LEFT(RIGHT(H20,15))*5+LEFT(RIGHT(H20,14))*8+L EFT(RIGHT(H20,13))*4+LEFT(RIGHT(H20,12))*2+LEFT(RIGHT(H20 ,11))*1+LEFT(RIGHT(H20,10))*6+LEFT(RIGHT(H20,9))*3+LEFT(RI GHT(H20,8))*7+LEFT(RIGHT(H20,7))*9+LEFT(RIGHT(H20,6))*10+ LEFT(RIGHT(H20,5))*5+LEFT(RIGHT(H20,4))*8+LEFT(RIGHT(H20, 3))*4+LEFT(RIGHT(H20,2))*2),11)+1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT( RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7+LEFT(RIGHT(H 20,17))*9+LEFT(RIGHT(H20,16))*10+LEFT(RIGHT(H20,15))*5+LEF T(RIGHT(H20,14))*8+LEFT(RIGHT(H20,13))*4+LEFT(RIGHT(H20,1 2))*2+LEFT(RIGHT(H20,11))*1+LEFT(RIGHT(H20,10))*6+LEFT(RIG HT(H20,9))*3+LEFT(RIGHT(H20,8))*7+LEFT(RIGHT(H20,7))*9+LEF T(RIGHT(H20,6))*10+LEFT(RIGHT(H20,5))*5+LEFT(RIGHT(H20,4)) *8+LEFT(RIGHT(H20,3))*4+LEFT(RIGHT(H20,2))*2),11)+1,1,0,"X", 9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(I NDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。
身份证校验码的确定计算方法11111
身份证识别码的确定计算方法大陆的身份证为18位,老的身份证是15位。
眼下人们在换发的新身份证俗称为“二代身份证”或者叫“二代征”,老身份证叫“一代证”。
一代身份证是上世纪80年代中期开始的,是依据《中华人民共和国居民身份证条例》(1985年9月6日第六届全国人民代表大会常务委员会第十二次会议通过1985年9月6日中华人民共和国主席令第二十九号公布1985年9月6日起施行)制作颁发的,采用印刷和照相技术塑封而成,只能视读不能机读,易于伪造,而且无法迅捷有效地对公民进行人、证同一认定,不利于有效打击伪造、变造居民身份证以及利用伪造证件、他人证件进行金融犯罪、流窜作案等违法犯罪活动,严重制约了这一法定证件在证明和识别公民身份方面的作用的正常发挥。
“二代证”是依据《中华人民共和国居民身份证法》(2003年6月第十届全国人大常委会第三次会议通过了《居民身份证法》,于2004年1月1日起施行。
本法自2004年1月1日起施行,《中华人民共和国居民身份证条例》同时废止)制作颁发的。
“二代证”由多层聚酯材料复合而成的单页卡式证件,可以视读,内嵌非接触式IC卡芯片作为“机读”存储器,可以将变动信息(如住址变动)追加写入;芯片使用特定的逻辑加密算法,有利于证件制发、使用中的安全管理,增强防伪功能;芯片和电路线圈在证卡内封装,能够保证证件在各种环境下正常使用,寿命在十年以上;并且具有读写速度快,使用方便,易于保管,以及便于各用证部门使用计算机网络核查等优点。
二代证”主要采用数字防伪和印刷防伪技术。
数字防伪用于机读信息的防伪,是将持证人的照片图象和身份项目内容等数字化后存入芯片。
可以有效起到证件防伪的作用,防止伪造证件或篡改证件机读信息内容。
证件表面的视读防伪,主要是采用高新技术制作的防伪标识和印刷防伪技术,具有一定的防伪功效。
18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。
身份证校验码计算公式及实例计算
⾝份证校验码计算公式及实例计算校验码是识别⼀个⾝份证号码是否真实存在的重要的依据。
那我们要如何通过校验码来判断⼀个⾝份证号码是否真实的呢?校验码如何判断⾝份证号码真伪呢?我们来看看具体计划过程。
第⼀步:将⾝份证号码的第1位数字与7相乘;将⾝份证号码的第2位数字与9相乘;将⾝份证号码的第3位数字与10相乘;将⾝份证号码的第4位数字与5相乘;将⾝份证号码的第5位数字与8相乘;将⾝份证号码的第6位数字与4相乘;将⾝份证号码的第7位数字与2相乘;将⾝份证号码的第8位数字与1相乘;将⾝份证号码的第9位数字与6相乘;将⾝份证号码的第10位数字与3相乘;将⾝份证号码的第11位数字与7相乘;将⾝份证号码的第12位数字与9相乘;将⾝份证号码的第13位数字与10相乘;将⾝份证号码的第14位数字与5相乘;将⾝份证号码的第15位数字与8相乘;将⾝份证号码的第16位数字与4相乘;将⾝份证号码的第17位数字与2相乘。
第⼆步:将第⼀步⾝份证号码1~17位相乘的结果求和,全部加起来。
第三步:⽤第⼆步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。
第四步:如果余数为0,那对应的最后⼀位⾝份证的号码为1;如果余数为1,那对应的最后⼀位⾝份证的号码为0;如果余数为2,那对应的最后⼀位⾝份证的号码为X;如果余数为3,那对应的最后⼀位⾝份证的号码为9;如果余数为4,那对应的最后⼀位⾝份证的号码为8;如果余数为5,那对应的最后⼀位⾝份证的号码为7;如果余数为6,那对应的最后⼀位⾝份证的号码为6;如果余数为7,那对应的最后⼀位⾝份证的号码为5;如果余数为8,那对应的最后⼀位⾝份证的号码为4;如果余数为9,那对应的最后⼀位⾝份证的号码为3;如果余数为10,那对应的最后⼀位⾝份证的号码为2。
⽐如:⾝份证号码 432831************ 这个⾝份证是否是有效⾝份证号码呢?请看校验码分析。
excel表格在同一张表格里如何检查身份证号码和名字对照是否一致
竭诚为您提供优质文档/双击可除excel表格在同一张表格里如何检查身份证号码和名字对照是否一致篇一:如何用excel来判断身份证号码是否正确如何用excel来判断身份证号码是否正确?没有参照系,只要格式、位数没错,就难以辨其是非了;而给出参照系,即可判别:★按补充题意,用性别判别对与错:1、如果以c列输入性别为准,在b列输入公式“=iF(iF(mod(mid(a1,17,1),2)=0,"女","男")=c1,"第17位正确","第17位错")”,向下复制到需要处如b3,即可判别a列号码第17位数码之对错,如黄色区域所示。
2、如果以a列输入号码为准,在d列输入公式“=iF(iF(mod(mid(a1,17,1),2)=0,"女","男")=c1,"c列正确","c列填错")”,向下复制到需要处如d3,即可判别c列填写之对与错,如绿色区域所示。
3、若以c列为准,还可以用红色标示a列数码以示其17位错误,以与b列相呼应。
请选中a1:a3在“格式/条件格式”中查看公式和格式具体设置。
附件:辨别.xls篇二:excel中判断身份证号的几个方法excel中判断身份证号是否正确的方法探讨身份证有15位和18位两种,身份证位数是否正确,我们可以用len函数判断。
但身份证上的日期是否合法:月份是否在1-12之间,日期是否在1-31之间,并且2月份只有28或29天,其他月份30或31天,都不能超过范围。
另外一般规定6岁以上才可以办理身份证,也就是年份也有一个超范围的可能性。
综合起来看,有三类错误:“身份证位数不对”、“月日错误”、“年份错误”。
假定身份证号码在b1单元格,下面的公式可以综合判断以上三种错误:=iF(oR(len(b1)=18,len(b1)=15),iF(len(b1)=18,iF(oR(m onth(date(1*(mid(b1,7,4)),1*(mid(b1,11,2)),1*(mid(b 1,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) ,"年份错误","")公式首先对身份证长度进行判断,是否等于15位或18位,然后对18位和15位身份证分别判断月日是否合法,最后判断18位身份证的年份是否合法。
身份证正确检验及验证公式
验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。
身份号校验及数据比对公式说明
2、Table_array为需要在其中Байду номын сангаас找数据的数据表。使用对区域或区域名称的引用。
3、col_index_num为table_array 中查找数据的数据列序号。
4、Range_lookup为一逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为FALSE或0 ,则返回精确匹配,如果找不到,则返回错误值 #N/A。
数据比对函数编写格式:
=VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
说明:vlookup函数的参数有Lookup_value、Table_array、col_index_num、Range_lookup,一共有4个。
身份证校验公式:(注意把D2修改成自己表中第一个身份证号所在的行列号)
=IF(LOOKUP(MOD(MID(D2,1,1)*7+MID(D2,2,1)*9+MID(D2,3,1)*10+MID(D2,4,1)*5+MID(D2,5,1)*8+MID(D2,6,1)*4+MID(D2,7,1)*2+MID(D2,8,1)*1+MID(D2,9,1)*6+MID(D2,10,1)*3+MID(D2,11,1)*7+MID(D2,12,1)*9+MID(D2,13,1)*10+MID(D2,14,1)*5+MID(D2,15,1)*8+MID(D2,16,1)*4+MID(D2,17,1)*2,11),{0;1;2;3;4;5;6;7;8;9;10},{"1";"0";"X";"9";"8";"7";"6";"5";"4";"3";"2"})=UPPER(MID(D2,18,1)),"正确","错误")
身份证查男女性别公式
身份证查男女性别公式
方法如下:
1,首先要了解的是:身份证第17位数代表性别,奇数为男,偶数为女。
所以我们需要先提取出来第17位数,这里就需要点公式—文本—MID,然后依次输入A2、17、1(意思是引用A2单元格数据,从第17位开始引用,引用1位)。
熟练的伙伴可以直接在B2单元格输入=MID(A2,17,1)。
2,接下来是要处理B列表格中的奇偶数,这里用MOD函数来取余数。
点公式—数学和三角函数—MOD,依次输入B2、2。
熟练的朋友直接输入
=MOD(B2,2)。
3,我们用到的最后一个函数是IF,点公式—逻辑—IF,依次输入C2=1、男、女(意思是识别C2表格中数据,是1显示男不是则显示女)。
熟练的朋友依旧直接输=IF(C2=1,"男","女")。
4,全部下拉之后就会显示出性别了,逐个公式解释完之后,现在就需要将所有公式加在一起了。
5,在单元格中直接输入=IF(MOD(MID(A2,17,1),2)=1,"男","女"),回车就完成了。
6,我把之前输入公式的单元格改文本格式,大家可以看下全部的公式过程。
当然,最简单的方法就是复制5中的公式直接用,当然用的时候注意把A2单元格改成你自己身份证号所在的单元格。
身份证正确检验及验证公式
公式二出处
EXCEL提取身份证出生日期、性别、检验身份证号码正确性
中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:
15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。
18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。
假定身份证号码在B1单元格,下面的公式可以综合判断以上三种错误:
验证公式三
=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),"年份错误","")
正则表达式-身份证号码验证
正则表达式-⾝份证号码验证⾝份证号码验证,包含两代⾝份证,第⼀代和第⼆代⾝份证第⼀代⾝份证15位,其编码规则顺序从左⾄右依次为6位数字地址码,6位数字出⽣年份后两位及⽇期,3位数字顺序码。
格式:^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$正则表达式分解如下:[1-9]\d{5}:前六位地区,⾮0开头\d{2} :出⽣年份后两位00-99((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}:顺序码三位,没有校验码第⼆代⾝份证18位,其编码规则顺序从左⾄右依次为6位数字地址码,8位数字出⽣年份⽇期码,3位数字顺序码,1位数字校验码(X有时会出现):格式: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$正则表达式分解如下:[1-9]\d{5} :前六位地区,⾮0开头(18|19|([23]\d))\d{2}:出⾝年份,覆盖范围为 1800-3999 年((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}[0-9Xx]:顺序码三位 + ⼀位校验码程序:private void BtnOK_Click(object sender, RoutedEventArgs e){if (string.IsNullOrEmpty(tbxName.Text)){MessageBox.Show($"姓名不可为空,请重新输⼊!");tbxName.Focus();return;}Name = tbxName.Text;Regex re = new Regex(@"(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)|(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)");if (re.IsMatch(tbxIDNumber.Text)){IDNumber = tbxIDNumber.Text;MessageBox.Show($"姓名:{Name},⾝份证号码:{IDNumber},符合规则");Close();}else{MessageBox.Show($"⾝份证号码格式不正确,请输⼊15或者18位的⾝份证号码。
第二代居民身份证号码的校验码计算模型、步骤、公式
②将公式①的(2n ÷ 11取余) 普 去掉,只留2n 通 公 式 ③将公式①的LookUp函数 换成Mid函数
④将公式②的LookUp函数 换成Mid函数
⑤将公式①变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11),{0;1;2;3;4;5;6;7;8;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 数 组 公 式 ⑥将公式②变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18ROW(INDIRECT("1:178;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 ⑦将公式③变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11)+1,1) 按Ctrl+Shift+Enter组合键 ⑧将公式④变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 按Ctrl+Shift+Enter组合键
身份证核对公式
EXCEL中你输入的公民身份号码正确吗?目录:1、输入错误自动红色显示提示2、15位身份证号码升位为18位公民身份号码3、自动生成出生日期和性别4、中华人民共和国国家标准GB 11643-1999 公民身份号码一、输入错误自动红色显示提示在企业报送的EXCEL电子表格中,经常遇到公民身份号码输入错误而给工作带来不必要的麻烦,降低了工作效率。
有没有办法在公民身份号码录入错误时进行自动提示呢?其实【中华人民共和国国家标准 GB 11643-1999】对公民身份号码第18位校验码已作了详细的规定,只是我们在电算工作中很少用到而已。
可用以下方法在EXCEL中录入公民身份号码错误时自动红字显示:选择需要录入公民身份号码的单元格(如A1),选择菜单:格式/条件格式。
①点击条件1左边的下拉箭头,选择公式,在右边的公式栏中输入以下公式:=AND(LEN(D4)<>0,LEN(D4)<>15,LEN(D4)<>18)接着单击格式,点击字体,颜色选择红色,确定。
②在条件格式中点添加,点击条件2左边的下拉箭头,选择公式,在右边的公式栏中输入以下公式:=MID("10X98765432",MOD(SUMPRODUCT(MID(D4,ROW($1:$17),1)*MOD(2^(18-ROW($1:$17)),11) ),11)+1,1)<>MID(D4,18,1)接着单击条件2中的格式,点击字体,颜色选择红色,确定,确定。
右键按住A1单元格右下角的小黑点,向下拖至所需要录入公民身份号码的所有单元格,松开右键,选择仅填充格式。
在接着的录入中,凡是输入不是15位或18位,或者输入18位错误的公民身份号码都会红色显示。
身份证重复显蓝色的公式:COUNTIF($D$4:$D$65536,D4)>1 二、15位身份证号码升位为18位公民身份号码要使单元格中A1中的15位身份证号码升位为18位公民身份号码,只需在单元格A2中输入以下公式即可:=REPLACE(A1,7,,19)&MID("10X98765432",MOD(SUMPRODUCT(MID(REPLACE(A1,7,,19),ROW($1:$1 7),1)*MOD(2^(18-ROW($1:$17)),11)),11)+1,1)或=REPLACE(A1,7,,19)&LOOKUP(MOD(SUMPRODUCT(MID(REPLACE(A1,7,,19),ROW($1:$17),1)*MOD(2^(18-ROW($1:$17)),11)),11),{0,1,2,3,4,5,6,7,8,9,10},{1,0,"X",9,8,7,6,5,4,3,2})三、自动生成出生日期和性别如果单元格A1为身份证号码或公民身份号码,单元格A2为性别,单元格A3为出生日期,则操作如下:在单元格A2中输入以下公式,则会自动生成性别:=IF(LEN(A1)=18,IF(INT(MID(A1,17,1)/2)=MID(A1,17,1)/2,"女","男"),IF(LEN(A1)=15,IF(INT(MID(A1,15,1)/2)=MID(A1,15,1)/2,"女","男"),""))在单元格A3中输入以下公式,则会自动生成出生日期:=IF(LEN(A1)=18,DATE(MID(A1,7,4),MID(A1,11,2),MID(A1,13,2)),IF(LEN(A1)=15,DATE(MID(A1,7,2),MID(A1,9,2),MID(A1,11,2)),""))[顶] EXCEL中多条件求和、计数的4种方法EXCEL中多条件求和、计数的方法大致可归纳为4种:⒈自动筛选法⒉合并条件法⒊数组公式法⒋调用函数法先打开上面的工作表,分别用这4种方法对同时满足“A2:A15区域为A,B2:B15区域为10,C2:C15区域为Ⅰ”条件的E2:E15区域进行求和、计数。
60分钟整理了三种有效方法判断身份证号码是否重复
Excel工作表身份证查重的三种方法详解
身份证查重的第一种方法-通过条件格式查重
1.先向右复制第一行身份证号码并添加字符a
2.在下面按快捷键Ctrl+E可以给所有身份证号码后填充字母a,
3.然后选择条件格式
4.突出显示重复值即可
身份证查重的第二种方法-通过if函数嵌套countif函数完成
1.利用countif函数,查找符合条件重复值数量,
=COUNTIF(A2:A9,A2&"*")
第一参数:A2:A9,这是一个数据区域不是单个数据,所以依旧会保持原有的文本格式
第二参数:B2&"*",在这里我们将身份证号码连接上一个星号,星号是通配符它代表任意多个字符,也可以代表没有字符,在这里他的作用就是代表没有任何字符,利用连接符号将身份证与星号连接后,身份证号码就会保持文本格式代入公式中计算,这样的话才能找到正确的结果
2.通过if函数,判断结果大于1就代表有重复,结果等于1则表示没有重复,
=IF(COUNTIF(A2:A9,A2&"*")>1,"重复","")
用这个公式的确可以找出重复的身份证号码(公式结果大于1),但是,这个公式只适用于数字个数相同的统计,如果不同就会出错。
如下图中A5和A9前18位相同,但多出了3个数字,用公式计算却是重复的。
所以遇到这种情况,用Sumproduct函数更靠谱些。
身份证查重的第三种方法-通过if函数嵌套Sumproduct函数。
身份证号码等公式
身份证号码导出出生年月1=TEXT(MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2),"YYYY-MM-DD")=MID(D2,7,4)&"-"&MID(D2,11,2)&"-"&MID(D2,13,2)提取出生年月或任意数字段 =mid(A5,7,8)年龄2=DATEDIF(TEXT(MID(A1,7,INT(LEN(A1)/2-1)),"#-00-00"),TODAY(),"Y")身份证姓名性别=IF(VALUE(MID(D2,15,3))/2=INT(VALUE(MID(D2,15,3))/2),"女","男")excel设置单元格格式后,必须双击才生效的解决办法选中整列,“数据”-“分列”-“下一步”-“下一步”-“常规”-“完成”。
如果该列有合并单元格,则选中需变换格式的列。
一次只能转换一列。
成绩排名:=RANK(A1,A:A)=COUNTIF($E$7:$E$28,">"&E7)+1比较异同=if(a2=b2,"","不同")=COUNTIF(A:A,b1)>=1两列数据比较异同=VLOOKUP(B:B,A:A,1,) 无序校验1=VLOOKUP(A:A,B:B,1,0) 无序校验2参加工作时间(出生年月入201005)计算工龄(年龄):1、=REPLACE(F1,5,0,"-") 加入,"-") 2、复制粘贴为日期格式 3、=YEAR(NOW())-YEAR(A4)计算工龄一列数据是否重复数据→删除重复项1、排序2、然后把旁边一列当辅助列,第一空格打进1,第二空格打入公式:=if($a3=$a2,2,1),然后按下回车键3、拖动2中的公式应用到下面剩余的单元格中,重复出现的词旁边单元格的值变为2,否则就是1:检验身份证号码=IF(IF(LEN(E5)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(E5,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(E5),IF(LEN(E5)=15,ISNUMBER(--TEXT(19&MID(E5,7,6),"#-00-00")))),"正确","身份证号错误")=IF(MID(E5,11,2)="12",MID(E5,7,4)+61&"年01"&"月",MID(E5,7,4)+60&"年"&MID(E5,11,2)+1&"月")=IF(LEN(E5)=15,IF(MOD(MID(E5,15,1),2)=1,"男","女"),IF(MOD(MID(E5,17,1),2)=1,"男","女"))姓名加空格=IF(LEN(B2)=2,LEFT(B2,1)&" "&RIGHT(B2,1),B2)数值比对=IF(COUNTIF($e:$e,$A2)=0,"",INDEX($e:$f,MATCH($A2,$e:$e,),COLUMN(A2)) )进一法使用的函数是roundup去一法使用的函数是ROUNDDOWN四舍五入使用的函数是round保留两位小数,你可以在A2中输入 =roundup(a1,2)=vlookup(b2,Sheet1!b:c,2,)自动填充=VLOOKUP(A3,Sheet1!A:C,3,0) 3表示第三列一组成绩前N名的平均数ROW(1:5)前5名=AVERAGE(LARGE(F4:F19,ROW(1:5))) 数组公式输入完成shift+ctrl+enter。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。
但身份证上的日期是否合法:月份是否在1-12之间,日期是否在1-31之间,并且2月份只有28或29天,其他月份30或31天,都不能超过范围。
另外一般规定6岁以上才可以办理身份证,也就是年份也有一个超范围的可能性。
综合起来看,有三类错误:“身份证位数不对”、“月日错误”、“年份错误”。
假定身份证号码在B1单元格,下面的公式可以综合判断以上三种错误:验证公式三=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*(M ID(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),"年份错误","")验证公式四=IF(LEN(A1)=0,"空",IF(LEN(A1)=15,"老号",IF(LEN(A1)<>18,"位数不对",IF(CHOOSE(MOD(SUM(MID(A1,1,1)*7 MID(A1,2,1)*9 MID(A1,3,1)*10MID(A1,4,1)*5 MID(A1,5,1)*8 MID(A1,6,1)*4 MID(A1,7,1)*2 MID(A1,8,1)*1 MID(A1,9,1)*6 MID(A1,10,1)*3 MID(A1,11,1)*7 MID(A1,12,1)*9MID(A1,13,1)*10 MID(A1,14,1)*5 MID(A1,15,1)*8 MID(A1,16,1)*4MID(A1,17,1)*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RIGHT(A1,1)*1),RIGHT(A1,1)*1,"X") ,"正确","错误"))))公式二出处EXCEL提取身份证出生日期、性别、检验身份证号码正确性中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。
18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。
其中3位数字顺序码,是为同一地址码的同年同月同日出生人员编制的顺序号,偶数的为女性,奇数的为男性。
1、提取籍贯地区的行政区划代码(A2为身份证号,下同)15与18位通用:=LEFT(A2,6)如果有一个编码和省份地区的对照表,可以用VLOOKUP函数来提取地区信息。
2、提取出生日期信息15位:=--TEXT(19&MID(A2,7,6),"#-00-00")18位:=--TEXT(MID(A2,7,8),"#-00-00")15与18位通用:=--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6IF(LEN(A2)=18,2,0)),"#-00-00")简化公式:=--TEXT((LEN(A2)=15)*19&MID(A2,7,6 (LEN(A2)=18)*2),"#-00-00") (请将输入公式的单元格格式设置为日期格式)3、提取性别信息15位:=IF(MOD(RIGHT(A2),2)=1,"男","女")18位:=IF(MOD(MID(A2),17,1)=1,"男","女")15与18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女")简化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女")4、检验身份证号码的正确性18位身份证号码的最后一位是检验码,它是根据身份证前17位数字依照规则计算出来的,其值0~9或X。
一般情况只要有一位数字输入错误,依照规则计算后就会与第18位数不符。
当然不排除按错误号码计算后恰好与检验码相符的情况,但这种情况出现的可能性较低。
因此,对18位号码的验证采用如下公式:=MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(A2,1)对于15位身份证,由于没有检验码,我们只能简单地去判断出生日期代码是否是一个有效的日期,避免输入一些像“731302”或“980230“等这样不存在的日期。
=ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00"))综合15位和18位后的通用公式为:=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11)1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00")))) 由于目前15位身份证号码已经很少了,如果对15位的号码不需要作进一步的判断,则公式可以简化成:=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(A2),LEN(A2)=15)将上面的公式放到B2单元格,如果结果为TRUE,则身份证号是正确的,结果为FALSE则是错误的。
你也可以将上述公式放在数据有效性中,防止录入错误的身份证号。