身份证正确检验及验证公式

合集下载

验证身份证号是否正确的公式、通过身份证号提取出生年月、性别、年龄等的公式汇总

验证身份证号是否正确的公式、通过身份证号提取出生年月、性别、年龄等的公式汇总

身份证号验证:=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。

18位身份证号码验证公式及标准

18位身份证号码验证公式及标准

18位身份证号码验证工具
计算依据及说明
根据《中华人民共和国国家标准》(GB 11643-1999)规定:
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

地址码(1-6位):表示编码对象常住户口所在县(市、旗、区)的行政区划代码
生日码(7-14位):表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。

例如:1981年05月11日就用19810511表示。

顺序码(15-17位):为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。

其中奇数分给男性,偶数分给女性。

校验码(18位):是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

第十八位数字的计算方法为:
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。

5.通过上面得知,如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。

如果余数是10,身份证的最后一位号码就是2。

以上算法来源于网络,具体规范见国家相关标准。

身份证识别男女的公式

身份证识别男女的公式

身份证识别男女的公式关于身份证如何辨别男女公式,身份证如何辨别男女这个很多人还不知道,今天菲菲来为大家解答以上的问题,现在让我们一起来看看吧!1.以前的十五身份证是倒数第一,现在的十八身份证是倒数第二。

2、十五位身份证如果最后一个数字是单数,那么说明就是男性,如果是双数,那么就是女性。

3.18位身份证是倒数第二个。

如果是单数,就是男性;如果是偶数,则为雌性。

4、身份证每一个数字都不是平白无故来的,都有它特定的意义,而这个代表性别的数字就是现在十八位身份证的倒数第二位,过去十五位身份证的最后一位。

5、一、身份证每一位数字都是有含义的,具体代表的东西是不一样的。

6、目前十五位的身份证号码已经废止了,现在用的都是十八位的身份证号码。

7.这十八位数字由十七位本体码和一位校验码组成。

8、其中前面的六位是地址码,代表了出生的地址;之后的八位是出生日期码,代表的出生的日期;再后的三位是数字顺序码,其中最后一个是代表性别的;而身份证最后一个数字或者字母是校验码,代表的是你出生那一刻同时出生的人中你排第几个。

9、二、身份证看性别就看一个数字,现在应该全国统一都使用十八位身份证了,所以就是看倒数第二位。

10.15位身份证早就被废除了,但一些个人可能仍然习惯使用15位身份证号码。

11、不过不管是十五位身份证还是十八位身份证,其中都是有一个数字代表性别的。

12、十八位身份证就是倒数第二个数字,只要是单数,或者叫做奇数,那么就代表是男性;而如果是双数,或者叫偶数,那么就代表是女性。

13、从一个身份证来区别男女是很容易的,而且看这个人的年龄也非常容易,如果你知识比较丰富,甚至可以从身份证前六位看出这个人是哪个省份、哪个城市的人。

本文到此分享完毕,希望对大家有所帮助。

标签:声明:本文由用户上传。

如有侵权,请联系删除!。

Excel中检测输入的身份证号码是否合法函数校验方法大揭秘

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函数判断。

新旧身份证合法性验证及相互转换算法

新旧身份证合法性验证及相互转换算法

新旧⾝份证合法性验证及相互转换算法转⾃:新旧⾝份证合法性验证及相互转换算法——谨以此⽂献给共事3年即将离职的PPL作者:成晓旭 前天,看到PPL在⼀个需要⽹站上注册,但该⽹站要求输⼊⼀个⾝份证号码,并且随便输⼊⼀个还不⾏:对⽅还要验证输⼊⾝份证的合法性,所以,烦得PPL在⽹上到处去找。

基于此⽬前,特别在⽹上收集⾝份证相关的资料,整理成⽂,作为给PPL饯⾏的礼物之⼀,公布于我的Blog。

也预祝PPL:“找份好⼯作,找个好⽼婆!”1、关于中国居民⾝份证的常识: 我国现⾏使⽤公民⾝份证号码有两种尊循两个国家标准,〖GB11643-1989〗和〖GB 11643-1999〗。

〖GB11643-1989〗中规定的是15位⾝份证号码:排列顺序从左⾄右依次为:六位数字地址码,六位数字出⽣⽇期码,三位数字顺序码,其中出⽣⽇期码不包含世纪数。

〖GB11643-1999〗中规定的是18位⾝份证号码:公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

地址码:表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码。

出⽣⽇期码:表⽰编码对象出⽣的年、⽉、⽇,其中年份⽤四位数字表⽰,年、⽉、⽇之间不⽤分隔符。

顺序码:表⽰同⼀地址码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈员编定的顺序号。

顺序码的奇数分给男性,偶数分给⼥性。

校验码:是根据前⾯⼗七位数字码,按照ISO7064:1983.MOD 11-2校验码计算出来的检验码。

关于⾝份证号码最后⼀位的校验码的算法如下: ∑(a[i]*W[i]) mod11 ( i = 2, 3, …, 18 ) "*" :表⽰乘号 i:表⽰⾝份证号码每⼀位的序号,从右⾄左,最左侧为18,最右侧为1。

a[i]:表⽰⾝份证号码第i 位上的号码 W[i]:表⽰第 i 位上的权值 W[i] = 2^(i-1) mod 11 设:R = ∑(a[i]*W[i])mod 11 ( i = 2, 3, …, 18 ) C = ⾝份证号码的校验码 则R和C之间的对应关系如下表: R:0 12 3 4 5 6 7 8 9 10 C:1 0 X 9 8 7 6 5 4 3 2 由此看出 X 就是 10,罗马数字中的 10就是X,所以在新标准的⾝份证号码中可能含有⾮数字的字母X。

excel表格在同一张表格里如何检查身份证号码和名字对照是否一致

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位身份证的年份是否合法。

身份证校验码计算公式及实例计算

身份证校验码计算公式及实例计算

⾝份证校验码计算公式及实例计算校验码是识别⼀个⾝份证号码是否真实存在的重要的依据。

那我们要如何通过校验码来判断⼀个⾝份证号码是否真实的呢?校验码如何判断⾝份证号码真伪呢?我们来看看具体计划过程。

第⼀步:将⾝份证号码的第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************ 这个⾝份证是否是有效⾝份证号码呢?请看校验码分析。

身份证数字校验码计算公式

身份证数字校验码计算公式

身份证数字校验码计算公式在中国,每个人的身份证号码都是唯一的,其中包括了个人的基本信息和校验码。

校验码是身份证号码中的最后一位数字,它是根据身份证号码的前17位数字计算而得到的。

校验码的存在可以帮助验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

那么,身份证数字校验码是如何计算的呢?首先,我们需要了解身份证号码的结构。

中国的身份证号码共有18位数字,其中前17位是个人的基本信息,包括地区、出生年月日和顺序码,最后一位是校验码。

校验码的计算是通过对前17位数字进行一系列的运算得到的。

校验码的计算公式如下:1. 将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

2. 将上一步得到的结果除以11,得到余数。

3. 根据余数在一个预先设定的对照表中找到对应的校验码。

下面我们来详细解释一下这个计算公式。

首先,加权因子是一个固定的数组,分别为,7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

这些数字分别对应身份证号码的前17位数字,用来进行加权计算。

接下来,我们将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

假设一个身份证号码的前17位数字分别为a1、a2、a3...a17,对应的加权因子分别为w1、w2、w3...w17,那么校验码的计算公式可以表示为:S = a1w1 + a2w2 + a3w3 + ... + a17w17。

其中S表示加权计算的结果。

然后,我们将S除以11,得到余数M。

余数M的取值范围为0到10。

最后,我们根据余数M在一个对照表中找到对应的校验码。

对照表如下:0,1。

1,0。

2,X。

3,9。

4,8。

5,7。

6,6。

7,5。

8,4。

9,3。

10,2。

根据上述对照表,我们可以找到对应余数M的校验码。

通过以上的计算公式,我们可以得到身份证号码的校验码。

这个计算过程可以帮助我们验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

检验身份证号码的正确性

检验身份证号码的正确性

检验身份证号码的正确性=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"))))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,6+IF(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。

Excel函数技巧:巧用Excel函数公式检验身份证号码

Excel函数技巧:巧用Excel函数公式检验身份证号码

Excel函数技巧:巧用Excel函数公式检验身份证号码小编有话说:小编还是第一次了解到身份证的编码规则呢,原来并不复杂,根据这个编码规则,我们自己也可以辨别身份证的真假,太牛逼了!不过说真的,要是公司员工的身份证号码写错了,而我们还没发现,真的会给公司带来很大的麻烦,所以今天我们就来和大家分享一个核查身份证号码是否有错误的公式。

一般来说,身份证号码会出现两类错误,长度错误和内容错误。

出现错误的原因大多数都输入过程中发生的,对于长度错误来说,目前都是18位的号码,如果长度出现错误,比较容易发现,但是如果其中的某一个数字出现错误,那就非常难以发现,以后就有可能会造成一些严重的后果,因此,今天重点就是核查内容的正确性。

一、身份证号组成原理首先需要了解一点关于身份证号码的编码规则:18位身份证号码组成:ddddddyyyymmddxxsp共18位,其中:1-6位是地区编码,7-14为出生日期,15-17这三位是性别代码,最后一位是根据前面的17个数字得到的校验位。

校验位的计算规则比较复杂:(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、将前面的身份证号码17位数分别乘以不同的系数。

从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

excel身份证验证公式

excel身份证验证公式

excel身份证验证公式
Excel身份证验证公式
1.验证格式:数据校验公式可以验证身份证号码是否正确和合法。

Excel中可以使用“LEN()”函数来确定身份证号码字符串的长度,再与18位数对比来明确证书是否存在。

2.验证位数:只有18位数身份证号码才能使用来进行校验,15位号码已不再使用,可以通过旧省份前两位是否是“35”、“36”或“37”来判断。

3.验证省级代码:通过省份前两位码来验证省级代码,与身份证号码前两位相对应。

4.验证出生日期:可以通过对身份证号码出生日期的部分(第7到14位)与Excel 中“LEFT()”“MID()”等函数结合,来验证身份证号码的出生日期,验证准确。

5.验证顺序号:通过身份证号码的第16位和第17位数字代表性别,第15位和第18位数字代表性别,第15位数字用于最后一位校验码的算法,如果正确,身份证号码可以正确匹配!
6.验证位:计算机通过一组算法,通过身份证号码前17位数字,计算
出一个0-10之间的数字,如果运算结果与最后一位数字相等则表示验证通过!
此外,Excel中对于身份证号码的验证,还可以利用VBA编程语言进行。

其中可以使用“If()Then()Else()”结构计算出一组结果,以决定身份证号码是否要验证成功。

身份证正确检验及验证公式

身份证正确检验及验证公式

公式二出处
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位的⾝份证号码。

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成

身份证号码校验也可以利用excel函数公式完成身份证号码校验也可以利用excel函数公式完成,无需vba编程。

一、18位身份证号码校验函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),"")二、15位身份证号码升18位函数公式:=IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",M OD(SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^( 18-ROW(INDIRECT("1:17")))),11)+1,1),"")三、同时完成15位升位或18位校验的函数公式:=IF(LEN(B2)=18,IF(MID("10X98765432",MOD(SUM(MID(LEF T(B2,17),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(B2,1),"通过","校验未通过"),IF(LEN(B2)=15,REPLACE(B2,7,,19)&MID("10X98765432",MOD( SUM(MID(REPLACE(B2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),""))以上公式中B2为身份证号码所在单元格。

身份证号码的规则及验证原理

身份证号码的规则及验证原理

⾝份证号码的规则及验证原理【⾝份证号码的规则】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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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则是错误的。

你也可以将上述公式放在数据有效性中,防止录入错误的身份证号。

相关文档
最新文档