第一篇:身份证号错误函数
Private Sub Worksheet_Change(ByVal Target As Range)On Error GoTo ErrorHandle '设置错误处理
Application.Volatile(False)'将函数标记为非易失性函数
If Target.Column = 15 And Target.Row > 4 Then '此处设置身份证件号所在列序号
Dim wi As Variant, ji As Variant, sum%, i%, datBirthday As Date
Dim s As String
s = Target.Text
wi = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)
ji = Array(“1”, “0”, “X”, “9”, “8”, “7”, “6”, “5”, “4”, “3”, “2”)If Len(s)= 18 Then If Not(IsNumeric(Mid(s, 1, 17))And(IsNumeric(Right(s, 1))Or Right(s, 1)= “X”))Then
Err.Raise vbObjectError + 1001, , “号码中有非法字符”
GoTo ErrorHandle End If ElseIf Len(s)= 0 Then
Cells(Target.Row, Target.Column).Interior.ColorIndex = 0 Exit Sub Else
Err.Raise vbObjectError + 1002, , “号码不是18位”
GoTo ErrorHandle End If datBirthday = DateValue(Mid(s, 7, 4)& “-” & Mid(s, 11, 2)& “-” & Mid(s, 13, 2))
sum = 0 For i = 0 To UBound(wi)sum = sum + Mid(s, i + 1, 1)* wi(i)Next i
If ji(sum Mod 11)<> Right(s, 1)Then
MsgBox “18位身份证号码中的校验码错误!” & vbCrLf & “您要输入的是:” & Left(s, 17)& ji(sum Mod 11)& “吗?”
Cells(Target.Row, Target.Column).Interior.ColorIndex = 33
Else
Cells(Target.Row, Target.Column).Interior.ColorIndex = 0 End If Exit Sub
ErrorHandle: If Err.Number = 13 Then
MsgBox “号码中出生日期非法” Else
MsgBox Err.Description End If
Cells(Target.Row, Target.Column).Interior.ColorIndex = 33 Exit Sub End If End Sub
第二篇:错误身份证号证明
证 明
因,导致我校学生 在2014年初二地理、生物结业考试(中考、体育考试、信实考试)报名时登记了错误的身份证号。
考生号: 正确身份证号: 错误身份证号:
考生签字: 学校签字盖章: 家长签字: 旗县区签字盖章:
年 月 日
附件:考生身份证复印件或户籍证明 要求学校、旗县区必须签字和盖章。
第三篇:电子表格中关于身份证号的函数
中国居民身份证号码是一组特征组合码,原为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(A1)=15)*19&MID(A1,7,6+(LEN(A1)=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(A1,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(A1)=18,MID(”10X98765432“,MOD(SUMPRODUCT(MID(A1,ROW(INDIRECT(”1:17“)),1)*2^(18-ROW(INDIRECT(”1:17“)))),11)+1,1)=RIGHT(A1),IF(LEN(A1)=15,ISNUMBER(--TEXT(19&MID(A1,7,6),”#-00-00“))))
由于目前15位身份证号码已经很少了,如果对15位的号码不需要作进一步的判断,则公式可以简化成:
=IF(LEN(A2)=18,MID(”10X98765432“,MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT(”1:17“)),1)*2^(18-ROW(INDIRECT(”1:17“)))),11)+1,1)=RIGHT(A2),LEN(A2)=15)
将上面的公式放到B2单元格,如果结果为TRUE,则身份证号是正确的,结果为FALSE则是错误的。
你也可以将上述公式放在数据有效性中,防止录入错误的身份证号。操作方法:选择需要输入身份证的全部单元格区域,比如A2:A10,点菜单”数据“-”有效性“,在”允许“的下拉框中选择”自定义“,在”公式“输入上面的15位和18位通用公式,确定以后即可。注意:公式里的”A2“是你刚才选定要输入身份证的单元格区域的第一个单元格,如果你是要在C3:C20输入身份证号,则将公式里的”A2“改为”C3“。另外,你也可以先设置好某单个单元格的数据有效性(这时公式的A2改为选定的单元格),再用格式刷将其格式刷到其他需要相同设置的单元格。
5、15位升为18位
=IF(LEN(A2)=15,REPLACE(A2,7,19)&MID(”10X98765432“,MOD(SUMPRODUCT(MID(REPLACE(A2,7,19),ROW(INDIRECT(”1:17“)),1)*2^(18-ROW(INDIRECT(”1:17“)))),11)+1,1),A2)
6、18位转换为15位
=IF(LEN(A2)=18,LEFT(REPLACE(A2,7,2,),15),A2)
7、示例
表中公式:
B2 =IF(LEN(A2)=18,MID(”10X98765432“,MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT(”1:17“)),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“))))
C2 =IF(A2<>”“,TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),”#-00-00“)+0,)
D2 =IF(A2<>”“,IF(MOD(RIGHT(LEFT(A2,17)),2),”男“,”女“),)
E2 =IF(A2<>”“,DATEDIF(TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),”#-00-00“),TODAY(),”y“),)
F2 =IF(A2<>”“,VLOOKUP(LEFT(A2,2),地区表!A:D,2,),)
H2 =IF(LEN(A2)=15,REPLACE(A2,7,19)&MID(”10X98765432“,MOD(SUMPRODUCT(MID(REPLACE(A2,7,19),ROW(INDIRECT(”1:17“)),1)*2^(18-ROW(INDIRECT(”1:17“)))),11)+1,1),A2)
I2 =IF(LEN(A2)=18,LEFT(REPLACE(A2,7,2,),15),A2)提取年龄公式:
=DATEDIF(TEXT(MID(B1,7,8),”#-00-00“),TODAY(),”Y“)
从身份证号码中提取出性别
=IF(MOD(MID(A1,15,3),2),”男“,”女“)(最简单公式)=IF(MOD(RIGHT(LEFT(A1,17)),2),”男“,”女“)
=IF(A2<>” ”,IF(MOD(RIGHT(LEFT(A2,17)),2),”男”,”女”),)=IF(VALUE(LEN(ROUND(RIGHT(A1,1)/2,2)))=1,”男“,”女“)
从身份证号码中进行年龄判断
=IF(A3<>””,DATEDIF(TEXT((LEN(A3)=15*19&MID(A3,7,6+(LEN(A3)=18*2),”#-00-00”), TODAY(),”Y”),)
=DATEDIF(A1,TODAY(),“Y”)
(以上公式会判断是否已过生日而自动增减一岁)=YEAR(NOW())-MID(E2,IF(LEN(E2)=18,9,7),2)-1900
=YEAR(TODAY())-IF(LEN(A1)=15,”19“&MID(A1,7,2),MID(A1,7,4))=YEAR(TODAY())-VALUE(MID(B1,7,4))&”岁“
=YEAR(TODAY())-IF(MID(B1,18,1)=”“,CONCATENATE(”19“,MID(B1,7,2)),MID(B1,7,4))
按身份证号号码计算至今天年龄
=DATEDIF(TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),”#-00-00“),TODAY(),”y“)以2006年10月31日为基准日,按身份证计算年龄(周岁)的公式
=DATEDIF(TEXT(MID(A1,7,6+(LEN(A1)=18)*2),”#-00-00“)*1,”2006-10-31“,”y“)
按身份证号分男女年龄段
按身份证号分男女年龄段,身份证号在K列,年龄段在J列(身份证号为18位)男性16周岁以下为男性16周岁(含16周岁)以上至50周岁为 2 男性50周岁(含50周岁)以上至60周岁为 3 男性60周岁(含60周岁)以上为
女性16周岁以下为女性16周岁(含16周岁)以上至45周岁为 2 女性45周岁(含45周岁)以上至55周岁为 3 女性55周岁(含55周岁)以上为
=MATCH(DATEDIF(DATE(MID(K1,7,4),MID(K1,11,2),MID(K1,13,2)),TODAY(),”y“),{0,16,50,60}-{0,0,5,5}*ISEVEN(MID(K1,17,1)))
=SUM(--(DATEDIF(MID(K1,7,4)&”/“&MID(K1,11,2)&”/“&MID(K1,13,2),TODAY(),”y“)>={0,16,45,55}+{0,0,5,5}*MOD(MID(K1,17,1),2)))
根据出生年月计算年龄 =DATEDIF(A1,TODAY(),”y“)=DATEDIF(A1,TODAY(),”y“)&”周岁“ =DATEDIF(A1,NOW(),”y")
第四篇:身份证号
身份证号: 功能: 1)查询身份证号所属地区 2)分析出生年月日、性别
是查看身份证所有人的所在地区 和 出生年月日、性别
18位身份号一般是由
所在地+所在区(县)+出生年月日+个人代码组成的!
个人代码尾数(也就是身份证号的最后一位)双数为女性,单数为男性!
举个例子:我是天津,天津地区号是120,区号(以河西区为例)103 生日:1958年2月9号 个人的代码是5918
这样组成的身份证号就是 ***918
中华人民共和国行政区划代码(GB/T2260—999)
代码 省、市名称 代码 省、市名称 11 北京市 42 湖北省 12 天津市 43 湖南省 13 河北省 44 广东省 14 山西省 45 广西壮族自治区 15 内蒙古自治区 46 海南省 21 辽宁省 50 重庆市 22 吉林省 51 四川省 23 黑龙江省 52 贵州省 31 上海市 53 云南省 32 江苏省 54 西藏自治区 33 浙江省 61 陕西省 34 安徽省 62 甘肃省 35 福建省 63 青海省 36 江西省 64 宁夏回族自治区 37 山东省 65 新疆维吾尔自治区 41 河南省
我们要验证身份证号是否正确,就得先了解身份证号的含意。
身份证号都代表什么意思?
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 尾数“X”啥意思?升位后有一部分人身份证号码的尾数却是“X”,常常被怀疑是假证。其实,第18位校验码是由公安部门按统一的公式计算出来的,从“1”至“10”,由10个阿拉伯数字组成。假如身份证尾号是10,那么号码就成了19位数,有关部门采用了罗马数字“X”来代替10,这样,有一部分居民的身份证号码尾数就是“X”。辽宁省 210000
名称 代码 名称 代码
沈阳市 210100 西岗区 210203 市辖区 210101 沙河口区 210204 和平区 210102 甘井子区 210211 沈河区 210103 旅顺口区 210212 大东区 210104 金州区 210213 皇姑区 210105 长海县 210224 铁西区 210106 瓦房店市 210281 苏家屯区 210111 普兰店市 210282 东陵区 210112 庄河市 210283 新城子区 210113 鞍山市 210300 于洪区 210114 市辖区 210301 辽中县 210122 铁东区 210302 康平县 210123 铁西区 210303 法库县 210124 立山区 210304 新民市 210181 旧堡区 210311 大连市 210200 台安县 210321
市辖区 210201 岫岩满族自治县 210323 中山区 210202 海城市 210381 抚顺市 210400 市辖区 210801 市辖区 210401 站前区 210802 新抚区 210402 西市区 210803 露天区 210403 鲅鱼圈区 210804 望花区 210404 老边区 210811 顺城区 210411 盖州市 210881 抚顺县 210421 大石桥市 210882
新宾满族自治县 210422 阜新市 210900 清原满族自治县 210423 市辖区 210901 本溪市 210500 海州区 210902 市辖区 210501 新邱区 210903 平山区 210502 太平区 210904 溪湖区 210503 清河门区 210905 明山区 210504 细河区 210911
南芬区 210511 阜新蒙古族自治县 210921 本溪满族自治县 210521 彰武县 210922 桓仁满族自治县 210522 辽阳市 211000 丹东市 210600 市辖区 211001 市辖区 210601 白塔区 211002 元宝区 210602 文圣区 211003 振兴区 210603 宏伟区 211004 振安区 210604 弓长岭区 211005
凤城满族自治县 210621 太子河区 211011 宽甸满族自治县 210624 辽阳县 211021 东港市 210681 灯塔县 211022 锦州市 210700 盘锦市 211100 市辖区 210701 市辖区 211101 古塔区 210702 双台子区 211102 凌河区 210703 兴隆台区 211103 太和区 210711 大洼县 211121
北镇满族自治县 210725 盘山县 211122 黑山县 210726 铁岭市 211200 义县 210727 市辖区 211201 凌海市 210781 银州区 211202 营口市 210800 清河区 211204
铁岭县 211221 喀喇沁左翼蒙古族自治县 211324 西丰县 211223 北票市 211381 昌图县 211224 凌源市 211382 铁法市 211281 锦西市 211400 开原市 211282 市辖区 211401 朝阳市 211300 连山区 211402 市辖区 211301 葫芦岛区 211403 双塔区 211302 南票区 211404 龙城区 211303 绥中县 211421 朝阳县 211321 建昌县 211422 建平县 211322 兴城市 211481
第五篇:身份证号变更证明
身份证号变更证明身份证号变更证明 公民身份证号码变更证明 本辖区居民: 性别: 民族 住址:
原使用的公民身份证号码为
□□□□□□□□□□□□□□□□□□ 系(重/错号)。根据《中华人民共和国居民身份证法》的有关规定及公民身份号码的编制原则,为确保公民身份号码的准确性和唯一性,自 年 月 日起将原号码更正为: □□□□□□□□□□□□□□□□□□。特此证明。您们好!我是重庆合川区二郎镇村民,因为我的身份证第一代与第二代还有银行卡都一起被小偷偷了,现第二代身份证已补办,但银行方面因为是第一代身份证与第二代身份证的号码有所变更,银行方面要求镇派出所出示一份证明,证明两个号码为同一个人,第一代的号码和第二代的,这也没什么影响,可我多次找到镇派出所开具证明,镇派出所都强行拒绝,我带上了户口本也不行,派出所的态度极度恶劣,拒绝的理由是为什么要为我开具证明,要求我出示银行卡,我有卡还出什么证明,吃多了没事做吗?说什么谁知道我搞什么,自己不把东西捡好,这是一个拿着老百姓的血汗钱为人民办的事吗?古有国以民为生,现也一样,老百姓需要的不就是一个为人民做事的人吗?他坐到那个位置上这点事都做不了、辩不了,那拿着钱做什么的,吃干饭的吗?像这种情况我的钱难道就不能要了吗?是政府改的身份证号码,让他查一下两个身份证确实属于同一人,开这样的证明他为什么不开,身份证号码是他改的,他出具一个证明有那么难吗?况且我还出具了户口本,要不给我补办第一代身份证了,那为什么政府更换身份证时不通知大家把银行卡也更换了,派出所的管事的人回答说,没有存档,他是管身份证的,这点事都做不好要来好看的吗?身份证是国民的代表信息,代表一个人的身份,他居然可以代表政府说出这样不负责任的话,查不到号码,看不到信息,没有存档,政府就是这样为人民做事的,问题是我补办身份证才几天,他居然这样说,现在我们老百姓要办点事比登天还难,补办身份证,今天叫你明天去,明天叫你后天去,跑了好多次,明明可以收也不收,就要难为老百姓,还凶得不得,政府官员代表的不止是一个政府还有一个国家,这样的态度难道就没人管了吗?政府就是这样为人民做事的,这样的人才来代表国家和政府的,别忘了你们的根也是老百姓。打电话到合川政府派出所,一个电话给你转一个电话,电话费都打了几十元,可没一个人管,就一个部门接一个部门的让你去找,找来找去就是循环的,难道政府就没人受理老百姓的事,真正为老百姓办事没有吗?这是什么时代,什么社会呀!政府总是让老百姓相信政府,可政府做了什么让老百姓相信的事了,值得信任的事了,如果再没人受理,我就不怕浪费时间继续反映,这里不受理我再重庆,再北京,上网发微博,我相信总有人管的,老百姓一定会找到有人帮的好官员的……急切的等待你们的回复,也等待你们处理此事,我的银行里的钱等着镇派出所开具证明才以能挂失……谢谢!办理单位:区公安局 办理结果:来信人: 您好,来信收悉,区政府高度重视,已责成区公安局调查处理,现将您反映的问题回复如下: 关于您反映二代身份证和一代身份证号码不一致,要求派出所出具证明的问题。区公安局安排户籍科工作人员与您联系后,着手调查,并将有关情况向您进行了详细解释。
经查,在常住人口系统中未发现您有变更身份证号码的信息,但是您一代身份证号码为15位,在更换为二代身份证后,15位的号码升为18位,属于正常的变化。因为您办理银行卡时,是使用第一代即15位号码的身份证登记的,现在遗失,需要到派出所出具证明。对此,请您将二代身份证及相关一代身份证材料带到二郎镇派出所,由派出所出具证明。
经追踪调查,二郎镇派出所已于12月14日,在您家人提交齐全有关证明材料后,为您出具了证明材料,目前已由您的家人寄往您工作所在地。