浅谈如何将身份证号码15位转为18位
如何转换身份证
![如何转换身份证](https://img.taocdn.com/s3/m/068b8a282af90242a895e58e.png)
从身份证号码提取出生日期、性别、年龄等信息2010-06-16 10:22早期的身份证号码为15位数字,现在使用的身份证号码为18位数字,它们的含义如下:(1)15位:1-6位为地区代码,7-8位为出生年份(2位),9-10位为出生月份,11-12位为出生日期,第13-15位为顺序号,这3位奇数为男,偶数为女。
(2)18位:1-6位为地区代码,7-10位为出生年份(4位),11-12位为出生月份,13-14位为出生日期,第15-17位为顺序号,同上,第18位为效验位。
在做员工档案管理的工作时,有时希望通过身份证号码,自动提取出各个员工的出生日期、性别、年龄等信息。
现在我们就通过几个公式,来得到这些信息。
1、出生日期=IF(LEN(A2)=15,CONCATENATE("19",MID(A2,7,2),"/",MID(A2,9,2),"/",MID(A2,11,2)),CONCATENATE(MID(A2,7,4),"/",MID(A2,11,2),"/",MID(A2,13,2))) LEN函数是检测这个身份证号码的数字位数,然后通过IF判断函数对15位或18位的情况做出不同处理。
CONCATENATE函数将提取出的分别代表“年”、“月”、“日”的信息,以及分隔符“/”等内容,合并成一个文本字符串。
MID函数的做用是从身份证的某个位置开始,取出若干字符。
比如MID(A2,7,2),就是将身份证号码(放在A2单元格中),从左边数第七个字符开始,取出2个字符。
2、性别=IF(LEN(A2)=15,IF(VALUE(RIGHT(A2,3))/2=INT(VALUE(RIGHT(A2,3))/2),"女","男"),IF(VALUE(MID(A2,15,3))/2=INT(VALUE(MID(A2,15,3))/2),"女","男"))由于代表性别的数字中,偶数为“女”,奇数为“男”,所以在这个公式中用VALUE函数将取出的字符串变成数字,再除以2,看是否能整除,因为奇数是不能整除的。
网上服务平台“身份证号码升位”操作指南
![网上服务平台“身份证号码升位”操作指南](https://img.taocdn.com/s3/m/970d3338ed630b1c59eeb5fe.png)
网上服务平台“身份证号码升位”操作指南一、总体操作流程首先,通过“人员管理”模块下“在职人员身份证号升位”功能和“离退休人员身份证号升位”功能分别对本单位在职、退休人员的15位身份证号进行升位。
其次,升位成功后,通过“数据交互”模块下“数据交互”功能进行数据上报。
最后,携带相关资料到经办机构进行审核。
二、在职人员身份号码升位第一步,点击“在职人员身份证号升位”功能。
第二步,选择导盘类型为“导出”,点击“查询”按钮。
这里会将本单位下所有在职身份证号为15位的人员列出,并按照公安部门规则对其分别拟生成18位身份证号信息。
第三步,点击“生成”按钮。
这里有两个列表,“身份证号码升位成功信息”列表展示的是所有15位身份证号可以按照公安部门规则生成18位身份证号的信息内容。
“身份证号码升位失败信息”列表展示的是不能按照公安部门规则生成18位身份证号的信息内容。
第四步,导出升级成功信息。
导出内容为excel表格,将其保存下来。
第五步,对导出的excel表格进行编辑。
表格中将本单位户下身份证号为15位人员以及对应的拟升位信息列示出来。
大家需要完成工作有:1、将拟生成身份证号升位信息逐一进行核对。
2、保留核对正确的人员信息,删除核对不正确人员信息。
3、全部核对完成后,将修改后的文件予以保存。
第六步,点击“在职人员身份证号升位”功能,将导盘类型选择为“导入”。
在导入文件处,通过浏览选择已进行核对的excel表格,并点击“查询”按钮。
这里“身份证升位成功信息”列表展示就是本单位经核对后保留的拟升位信息。
点击“确定”按钮,导入成功。
第七步,点击“数据上报”功能。
“待上报业务信息汇总列表”列示的为拟上报信息,如果上报前发现报送内容有误,可通过进行撤销。
如果无误,点击“数据上报”按钮,并携带相关资料到经办机构进行审核。
三、离退休人员身份号码升位通过“离退休人员身份号码升位”功能进行离退人员15位身份证号升18位,具体操作,同“在职人员身份号码升位”操作步骤。
身份证15位变18位
![身份证15位变18位](https://img.taocdn.com/s3/m/58a8eb10866fb84ae45c8de1.png)
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
身份证15位升18位
![身份证15位升18位](https://img.taocdn.com/s3/m/4e5aaea2f9c75fbfc77da26925c52cc58bd690c2.png)
身份证15位升18位导言身份证是中国公民的重要身份证明,每一个具有中国国籍的公民在十八岁后都需要办理一张身份证作为个人身份的合法证明。
然而,近年来中国政府为了提高身份证的安全性和确保公民信息的完整性,决定将原来的15位身份证号码升级为18位。
本文将详细介绍身份证号码从15位升级到18位的原因、具体改变的内容以及升级后需要注意的事项。
一、身份证15位升18位的原因1. 加强身份证号码的唯一性15位的身份证号码由于位数较少,容易造成重复。
为了确保每个公民都有唯一的身份证号码,升级到18位可以大大降低重复率,提高身份证号码的唯一性。
2. 提高身份证信息的完整性18位的身份证号码相较于15位,增加了三个数字,其中包含了公民的出生年份、性别等信息。
通过增加这些信息,可以提高身份证信息的完整性,方便有关部门进行个人身份信息的核实和调查。
3. 加强身份证的防伪能力升级到18位身份证能够增加身份证的防伪能力,通过增加更多的位数和加密算法,可以更好地防止身份证号码的伪造和篡改。
二、身份证15位到18位的具体改变1. 增加年份代码在新的18位身份证号码中,前六位为公民身份号码的地区代码,接下来的八位为出生年份、月份和日期的代码。
其中,年份代码由15位的两位简化为四位数字,方便区分不同年份的公民。
2. 增加顺序码在18位身份证号码的第十五位到第十七位是顺序码,用于标记同一地区、同一出生日期并且同性别的人。
这十位数字将大大降低同年同月同日出生的公民的身份证号码重复率。
3. 修改末位校验码的生成规则新的18位身份证号码末位校验码的生成规则也有所调整。
通过新的加权和取模算法,能够更有效地检测身份证号码的正确性和准确性。
三、身份证15位升18位后需要注意的事项1. 身份证号码的更换所有已经办理的15位身份证持有人需要在规定期限内将身份证号码更换为18位号码。
具体的更换流程和时间可以向居住地的派出所咨询。
2. 更新身份证号码的使用范围在更换为18位身份证号码后,公民需要及时更新和提供新的身份证号码给相关机构和单位。
身份证access转换(使用实例技巧)
![身份证access转换(使用实例技巧)](https://img.taocdn.com/s3/m/fdcb6c042bf90242a8956bec0975f46527d3a7be.png)
身份证access转换(使用实例技巧)Excel中将15位身份证号转换为18位其实并不复杂,下面请跟我们来输入一些公式。
假设A列自A2起是身份证号(15位或18位)。
1、身份证号全部改为18位,输入数组公式:=IF(LEN(A2)=15,REPLACE(A2,7,,19)&MID("10X98765432",MOD( SUM(MID(REPLACE(A2 ,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1),A2)注意:数组公式输入方法:输入公式后不要按回车,而是按Ctrl+Shift+Enter。
2、身份证号全部改为15位,输入公式:=IF(LEN(A2)=15,A2,LEFT(REPLACE(A2,7,2,),15))3、计算出生日期:=IF(A2"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2)," #-00-00")+0,)4、判断性别:=IF(A2"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),)注意:重新建立一个窗体,把下面非红色文字粘贴到代码区即可。
蓝色文字是控件的名称,如果你添写身份证号的控名称是“证件号码”,那要把下面所有的“身份证号码”改为“证件号码”。
可以把库发给我,我帮你做。
/doc/c214815838.html,我的主页,支持一下点击率,上面有美女的。
我的邮箱:gy0503@/doc/c214815838.html,1、先把下列代码复制到代码窗口任意位置:Function idcode(sCode15 As String) As StringDim i As IntegerDim num As IntegerDim code As Stringnum = 0idcode = Left(sCode15, 6) + "19" + Right(sCode15, 9)For i = 18 To 2 Step -1num = num + (2 ^ (i - 1) Mod 11) * (Mid(idcode, 19 - i, 1))Next inum = num Mod 11Select Case numCase 0code = "1"Case 1code = "0"Case 2code = "X"Case Elsecode = Trim(Str(12 - num))End Selectidcode = idcode + codeEnd Function2、如果你的数据很多,在成为当前的代码里,把15位号变为18位,再根据18位号码让性别显示男或女,然后设置计时器,在计时器触发事件里写入进入下一记录的代码,这样当你加载窗体里,数据会自动移动并更新,但到最后一条记录里会出现错误,因为到最后一条时,下一条记录是新添加记录,不过没关系,出现错误时按结束就行了。
EXCEL函数身份证的奥妙
![EXCEL函数身份证的奥妙](https://img.taocdn.com/s3/m/91e9cd96daef5ef7ba0d3c1a.png)
EXCEL函数如何有效的把身份证上的信息提出并使用1、身份证号码如何从15位变换成18位第一种需要辅助列的转换辅助列9分析我们看得出15位身份证号码用1-15的数据乘以相应数据最后我们用mod(结果,11)得到辅助列的答案然后我们用if或者vlookup来获得最后一个值当然也可以直接一步到位如果觉得上面的公式复杂了?好办,再简单点我们利用REPLACE替换公式18位身份证号码15位身份证号码18位身份证号码500110840602001500110198406020013500110840602001500110198406020013C6=5则为7C6=6则为6C6=7则为5C6=8则为4利用TRANSPOSE来完成转项C6=9则为3C6=10则为215位身份证号码MIDB(A6,15,1)*2C6=0则为1C6=1则为0C6=2则为"X"C6=3则为9C6=4则为8MIDB(A6,9,1)*7MIDB(A6,10,1)*9MIDB(A6,11,1)*10MIDB(A6,12,1)*5MIDB(A6,13,1)*8MIDB(A6,14,1)*4MIDB(A6,3,1)*10MIDB(A6,4,1)*5MIDB(A6,5,1)*8MIDB(A6,6,1)*4+1*2+9*1MIDB(A6,7,1)*6MIDB(A6,8,1)*350011084060200115位身份证号码500110************18位身份证号码MIDB(A6,1,1)*7MIDB(A6,2,1)*92、身份证可以提取的信息身份证号码提取生日方法1方法21984-06-021984-6-21984-06-021984-6-2方法1是用双text转换成YYYT-MM-DD的格式方法2是直接使用text设为#-00-00身份证号码提取年龄方法1方法229292929方法1是根据身份证的年月日对应系统的年月日方法2是根据身份证的年对应系统的年身份证号码提取性别方法1方法2男男男男方法1是根据15位身份证号的最后一位或18位身份证号的倒数第二位来判断方法2是根据身份证15及之后的3位来除以2,余数为0则是女,否则是男18位身份证号码50011019840602001318位身份证号码15位身份证号码500110*********18位身份证号码50011019840602001350011084060200150011019840602001315位身份证号码50011084060200115位身份证号码。
Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例
![Java根据身份证号计算年龄,15位身份证号码转18位原理与操作示例](https://img.taocdn.com/s3/m/bd29b33a905f804d2b160b4e767f5acfa1c783af.png)
Java根据⾝份证号计算年龄,15位⾝份证号码转18位原理与操作⽰例本⽂实例讲述了Java根据⾝份证号计算年龄,15位⾝份证号码转18位。
分享给⼤家供⼤家参考,具体如下:第⼀代⾝份证:15位⾝份证号码的意义15位⾝份证号码各位的含义:1-2位省、⾃治区、直辖市代码;3-4位地级市、盟、⾃治州代码;5-6位县、县级市、区代码;7-12位出⽣年⽉⽇,⽐如670401代表1967年4⽉1⽇,这是和18位号码的第⼀个区别;13-15位为顺序号,其中15位男为单数,⼥为双数;与18位⾝份证号的第⼆个区别:没有最后⼀位的校验码。
举例:130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出⽣⽇期为1967年4⽉1⽇,顺序号为001第⼆代⾝份证:18位⾝份证号码的意义 ①前1、2位数字表⽰:所在省份的代码,河南的省份代码是41哦! ②第3、4位数字表⽰:所在城市的代码; ③第5、6位数字表⽰:所在区县的代码; ④第7~14位数字表⽰:出⽣年、⽉、⽇; ⑤第15、16位数字表⽰:所在地的派出所的代码; ⑥第17位数字表⽰性别:奇数表⽰男性,偶数表⽰⼥性; ⑦第18位数字是校检码:也有的说是个⼈信息码,⼀般是随计算机随机产⽣,⽤来检验⾝份证的正确性。
校检码可以是0~9的数字,有时也⽤x表⽰。
举例:130503 19670401 0012这个⾝份证号的含义: 13为河北,05为邢台,03为桥西区,出⽣⽇期为1967年4⽉1⽇,顺序号为001,2为校验码。
根据⾝份证号(18位)提取出⽣年⽉⽇和计算年龄package idcard;import java.text.SimpleDateFormat;import java.util.Date;public class IdCardTest {//根据⾝份证号输出年龄public static int IdNOToAge(String IdNO){int leh = IdNO.length();String dates="";int age = 0;if (leh == 18) {dates = IdNO.substring(6, 10);SimpleDateFormat df = new SimpleDateFormat("yyyy");String year = df.format(new Date());age = Integer.parseInt(year)-Integer.parseInt(dates);}else {System.out.println("出错!⾝份证长度不是18位!");}return age;}public static void main(String[] args) {System.out.println(IdNOToAge("120000************"));System.out.println(IdNOToAge("320000************"));}}15位⾝份证号码转换成18位⾝份证号码package idcard;import java.util.Scanner;public class IDcard15bitTo18bit {public static String[] trans15bitTo18bit(String[] input){String[] result = new String[18];for(int i=0;i<input.length;i++){if(i<=5){result[i] = input[i];}else{result[i+2] = input[i];}}//年份最后两位⼩于17,年份为20XX,否则为19XXif(Integer.valueOf(input[6])<=1&&Integer.valueOf(input[7])<=7){result[6]="2";result[7]="0";}else{result[6]="1";result[7]="9";}//计算最后⼀位String[] xs = {"7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"}; //前⼗七位乘以系数[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],int sum = 0;for(int i=0;i<17;i++){sum+= Integer.valueOf(result[i]) * Integer.valueOf(xs[i]);}//对11求余,的余数 0 - 10int rod = sum % 11;//所得余数映射到对应数字即可if(rod==0){ result[17] = "1";}else if(rod==1){ result[17] = "0";}else if(rod==2){ result[17] = "X";}else if(rod==3){ result[17] = "9";}else if(rod==4){ result[17] = "8";}else if(rod==5){ result[17] = "7";}else if(rod==6){ result[17] = "6";}else if(rod==7){ result[17] = "5";}else if(rod==8){ result[17] = "4";}else if(rod==9){ result[17] = "3";}else if(rod==10){ result[17] = "2";}return result;}public static void main(String[] args) {//创建输⼊对象Scanner sc=new Scanner(System.in);//获取⽤户输⼊的字符串String str="";System.out.print("请输⼊您的15位⾝份证号:");str=sc.nextLine();System.out.println("您输⼊的15位⾝份证号为:"+str);if(str.length()==15){String[] input = str.split("");String[] result = trans15bitTo18bit(input);System.out.print("您的18位⾝份证号是:");for(String c:result){System.out.print(c);}}else{System.out.println("不符合格式的⾝份证号!");}}}附:C# 版与VB 版 15位的⾝份证号转为18位操作⽰例C# 版function ID15T18(strTemp){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var nTemp = 0, i;if(strTemp.length==15){strTemp = strTemp.substr(0,6) + '19' + strTemp.substr(6,strTemp.length-6);for(i = 0; i < strTemp.length; i ++){nTemp += strTemp.substr(i, 1) * arrInt[i];}strTemp += arrCh[nTemp % 11];}return strTemp;}VB 版privatestringConvert15To18(stringstrTemp){int[]arrInt=newint[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};stringarrCh="10X98765432";intnTemp=0;if(strTemp.Length==15){strTemp=strTemp.Substring(0,6)+"19"+strTemp.Substring(6,strTemp.Length-6);for(inti=0;i<strTemp.Length;i++){nTemp+=int.Parse(strTemp.Substring(i,1).ToString())*arrInt[i];}strTemp+=arrCh[nTemp%11];}chardd=arrCh[nTemp%11];returnstrTemp;}PS:这⾥再提供⼀款本站⾝份证归属地信息查询⼯具供⼤家参考:另外,本站在线⼯具⼩程序上也有⼀款功能更加强⼤的⾝份证信息获取⼯具,感兴趣的朋友可以扫描如下⼩程序码查看:更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》和《》希望本⽂所述对⼤家java程序设计有所帮助。
在excel中前面加字、由身份证号求出生日期、性别、年龄Excel中如何将15位身份证号转换为18位
![在excel中前面加字、由身份证号求出生日期、性别、年龄Excel中如何将15位身份证号转换为18位](https://img.taocdn.com/s3/m/7c2887b6ee06eff9aff8076a.png)
在EXCEL2003中把数字转换成日期1。
假定A2为文本数字,B2存放转换后的日期。
请在B2输入公式:=DATE(MID(A2,1,4),MID(A2,5,2),MID(A2,7,2))=DATE(MID(H2,1,4),MID(H2,5,2),MID(H2,7,2))2。
把B2设置成你要的格式。
右击B2单元格-----选“设置单元格格式”----选“数字”下的“自定义”-----在“类型”框中输入“YYYY-MM-DD-”(引号不要输入)-----点“确定”。
格式为“**年**月”的:设A列是身份证号,可在B1输入:=IF(LEN(A1)=15,MID(A1,7,2)&"年"&MID(A1,9,2)&"月",MID(A1,9,2)&"年"&MID(A1,11,2)&"月")再将公式向下复制即可。
格式为“****年**月”的:=IF(LEN(A1)=15,"19"&MID(A1,7,2)&"年"&MID(A1,9,2)&"月","19"&MID(A1,9,2)&"年"&MID(A1,11,2)&"月")再将公式向下复制即可。
如果你再想限制身份证号输入错误,可用这个公式:=IF(OR(LEN(A1)=15,LEN(A1)=18),IF(LEN(A1)=15,MID(A1,7,2)&"年"&MID(A1,9,2)&"月",MID(A1,9,2)&"年"&MID(A1,11,2)&"月"),"证号错误")这样只要输入的证号不是15位或18位就提示了。
15位身份证转18位身份证
![15位身份证转18位身份证](https://img.taocdn.com/s3/m/32baa09b6429647d27284b73f242336c1eb93093.png)
15位⾝份证转18位⾝份证15位⾝份证是⼀代⾝份证,18位⾝份证是⼆代⾝份证第⼀代居民⾝份证是中国⾃为公民颁发的性证件,第⼀阶段采⽤印刷和照相翻拍技术塑封⽽成,为密封、单页卡式,15位编码。
1995年7⽉1⽇起启⽤新的防伪居民⾝份证,采⽤全息透视塑封套防伪。
1999年10⽉1⽇起,建⽴和实⾏制度,⾝份代码是唯⼀的、终⾝不变的。
2004年1⽉1⽇,开始换发,第⼀代居民⾝份证已经于2013年1⽉1⽇正式退出。
【百度百科】⾸先认识下15位的⾝份证号码:15位⾝份证号码:511702*********。
前六位表⽰地址码,精确到县。
6到12位表⽰出⽣⽇期,格式为yyMMdd格式。
最后3位顺序码,表⽰同⼀地区内的顺序号,顺序码的奇数分配给男性,偶数分配给⼥性。
⾸先将15位的⾝份证号码的出⽣⽇期位补全为yyyy-MM-dd的格式。
⽐如原来15位的出⽣⽇期位8010222改为19800222,修改后的号码就变成了。
51170219800222130。
将上⾯修改后的17位号码做计算:将上⾯的号码每⼀位按照下⾯的加权因⼦的数字集合的顺序分别相乘后求和。
加权因⼦{ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }。
例如5*7+1*9+1*10+。
+0*2=224。
对上⾯获得的和值计算模,然后根据模的值获取校验码数组中对应位置的数据(注意:位置索引从0开始计算)作为18位⾝份证的最后⼀位。
校验码数组{ "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" }。
如:上⾯的和为取11的模,如下:224%11=4。
身份证核对公式
![身份证核对公式](https://img.taocdn.com/s3/m/b9a34c76f46527d3240ce056.png)
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区域进行求和、计数。
身份证号码转换
![身份证号码转换](https://img.taocdn.com/s3/m/c3a2f680b9d528ea81c779e8.png)
oldtonew = newnumber + code
end function
估计பைடு நூலகம்能看懂的不会太多,那偶就来演算一个吧。
假定旧号码为ABCDEFGHIJKLMNO
第一步,将旧号码变成ABCDEF19GHIJKLMNO
第二步,利用2的17次方到2的1次方对11进行除法运算后取得的余数,与旧号码ABCDEF19GHJIJKLMNO中的各位依次相乘并相加,得到一个num,简单来说,这个
先给大家看一下源码:
function oldtonew (oldnumber)
newnumber = left (oldnumber,6) + "19" + right (oldnumber,9)
num = 0
for i = 18 to 2 step -1
num = num + (2 ^ (i - 1) mod 11) * (mid (newnumber,19 - i,1))
num = 7*A+9*B+10*C+5*D+8*E+4*F+2*1+1*9+6*G+3*H+7*I+9*J+10*K+5*L+8*M+4*N+2*O
第三步,将num除以11得到一个余数S
第四步,如果S=0,则最后一位数字为1;
如果S=1,则最后一位数字为0;
身份证号码转换
偶然间对15位身份证号转18位身份证号的转换原理发生了兴趣,显然,前17位没有什么花样可言,而最后一位的转换,却并非是对原来的15位号码进行简单的加法或乘法运算就可以完成的。上网查了一下,发现说的都很含糊,给出的计算公式也不是那么明朗,总之,一句话,看不懂的说~~
身份证号码校验也可以利用excel函数公式完成
![身份证号码校验也可以利用excel函数公式完成](https://img.taocdn.com/s3/m/a790d2ce48649b6648d7c1c708a1284ac8500562.png)
身份证号码校验也可以利用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为身份证号码所在单元格。
将15位身份证补全为18位身份证的算法示例详解
![将15位身份证补全为18位身份证的算法示例详解](https://img.taocdn.com/s3/m/a8a43618ba68a98271fe910ef12d2af90242a83a.png)
将15位⾝份证补全为18位⾝份证的算法⽰例详解前⾔最近在参与⼀个银⾏项⽬-某银⾏安防系统-反洗钱需求的开发,银⾏项⽬的离不开⾝份证号码,⾝份证号码作为我国公民的唯⼀标识,有这⾮同寻常的意义,由于业务的要求15位的⾝份证号码⽆法命中,所以需要补全为18位,⼀开始⾃⼰想着加个年份的前两位,后⾯再加个X不就⾏了嘛,后来代码写不下去了,上⽹查了资料,才知道⾃⼰想的是多么天真,还是⽐较复杂的,折腾了⼀下午终于有了眉⽬。
⼀、15位⾝份证和18位⾝份证号码结构介绍要进⾏⾝份证号码的验证,⾸先需要了解我国⾝份证号码的编码规则。
我国⾝份证号码多由若⼲位数字或者数字与字母混合组成。
早期⾝份证由15位数字构成,这主要是在1980年以前发放的⾝份证,后来考虑到千年⾍问题,因为15位的⾝份证号码只能为1900年1⽉1⽇到1999年12⽉31⽇出⽣的⼈编号,所以⼜增加了18位⾝份证号码编号规则。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15A A A A A A Y Y M M D D N N S前六位AAAAAA是⾝份证编码对象的所在地(出⽣地)的编码,该号码可由国家统计局公布的相关标准中得到。
YY表⽰出⽣年的后两位,MM和DD表⽰出⽣⽉和⽇,不⾜两位的⾼位补0,NNS为顺序号,⽆法确定。
S为性别识别码,男性为奇数,⼥性为偶数。
了解了这些,再来写代码就变得容易多了。
⼆、算法实现了解了⾝份证号码的规则后,我们就可以推断出,⾝份证的15位转化位需要两步。
⾸先把15位⾝份证号补全为17位,然后再补全最后⼀位。
但是最后⼀位是数字还是字母X?这⾥⼜出现了问题。
我们知道,⾝份证的最后⼀位为校验位,那么最后⼀位是怎么得到的呢?原来,最后⼀位是由数字1-9组成,超过9的⽐如11就⽤字母X表⽰,否则号码就变成了19位。
了解了这些,经过整理得出⾝份证补全算法实现思想如下:step1、将15位⾝份证号码加⼊出⽣年变为17位 step2、将step1得到的⾝份证17位数分别乘以不同的系数。
15位身份证号码转18位算法
![15位身份证号码转18位算法](https://img.taocdn.com/s3/m/065629ef900ef12d2af90242a8956bec0975a5b7.png)
15位⾝份证号码转18位算法18位⾝份证标准在国家质量技术监督局于1999年7⽉1⽇实施的GB11643-1999《公民⾝份号码》中做了明确的规定。
GB11643-1999《公民⾝份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民⾝份号码",另外GB11643-1999《公民⾝份号码》从实施之⽇起代替GB11643-1989。
GB11643-1999《公民⾝份号码》主要内容如下:⼀、范围该标准规定了公民⾝份号码的编码对象、号码的结构和表现形式,使每个编码对象获得⼀个唯⼀的、不变的法定号码。
⼆、编码对象公民⾝份号码的编码对象是具有中华⼈民共和国国籍的公民。
三、号码的结构和表⽰形式1、号码的结构公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位校验码组成。
排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。
2、地址码表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码,按GB/T2260的规定执⾏。
3、出⽣⽇期码表⽰编码对象出⽣的年、⽉、⽇,按GB/T7408的规定执⾏,年、⽉、⽇代码之间不⽤分隔符。
4、顺序码表⽰在同⼀地址码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈编定的顺序号,顺序码的奇数分配给男性,偶数分配给⼥性。
5、校验码(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四、举例如下:北京市朝阳区: 110105************⼴东省汕头市: 44052418800101001415位升18的⽅法根据〖中华⼈民共和国国家标准 GB 11643-1999〗中有关公民⾝份号码的规定,公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅谈如何将身份证号码15位转为18位
笔者日前参与城乡居民保险制度全覆盖审计调查,在审查参保人员是否存在重复参加城乡居保及职工养老险种情况时,发现城乡居保参保人信息中身份证号码均为18位,而职工养老参保人信息中身份证号码长度不唯一,导致无法正确比对数据。
18位身份证号码除了据原有15位基础上,在出生年月部分添加“19”外,号码最后添加一位验证码。
公安局公布的验证码算法内容概述为:将添加“19”后的17位身份证号码对应乘上系数并求和,再将系数和除11后求余数,根据余数对应选择验证码。
笔者据此编写出一套语句,内容如下:
一、筛选出15位身份证号码后生成一张新表,将其转为17位
1.select 公民身份号码 into 身份证号码 from dbo.个人基本信息 where len(公民身份号码)=15
2. alter table 身份证号码 add 公民身份号码17位varchar(20)
3.update 身份证号码 set 公民身份号码17位
=substring(公民身份号码,1,6)+'19'+RIGHT(公民身份号码,7)
二、添加系数和、余数及验证码三列
Alter table 身份证号码 add系数和 int
Alter table 身份证号码 add余数 int
Alter table 身份证号码 add验证码 varchar(2)
三、求系数和
update dbo.身份证号码 set 系数和 =cast(left(公民身份号码17位,1) as int)*7+cast(substring(公民身份号码17位,2,1) as int)*9+cast(substring(公民身份号码17位,3,1) as int)*10+cast(substring(公民身份号码17
位,4,1)as int)*5+cast(substring(公民身份号码17
位,5,1)as int)*8+cast(substring(公民身份号码17
位,6,1)as int)*4+cast(substring(公民身份号码17位,7,1) as int)*2+cast(substring(公民身份号码17位,8,1)as int)*1+cast(substring(公民身份号码17位,9,1)as
int)*6+cast(substring(公民身份号码17位,10,1)as
int)*3+cast(substring(公民身份号码17位,11,1)as
int)*7+cast(substring(公民身份号码17位,12,1) as int)*9+cast(substring(公民身份号码17位,13,1)as
int)*10+cast(substring(公民身份号码17位,14,1)as int)*5+cast(substring(公民身份号码17位,15,1)as
int)*8+cast(substring(公民身份号码17位,16,1)as
int)*4+cast(substring(公民身份号码17位,17,1)as int)*2
四、求余数
Update 身份证号码 set 余数=系数和%11
五、求验证码
Update 身份证号码 set 验证码= case when 余数=0 then '1'
when 余数=1 then '0'
when 余数=2 then 'x'
when 余数=3 then '9'
when 余数=4 then '8'
when 余数=5 then '7'
when 余数=6 then '6'
when 余数=7 then '5'
when 余数=8 then '4'
when 余数=9 then '3'
when 余数=10 then '2' end
六、更新原参保信息表
Update a set a. 公民身份号码='b.公民身份号码位'+'b.验证码' from dbo.个人基本信息a,身份证号码 b where a. 公民身份号码=b. 公民身份号码。