ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: winak

[讨论]18位身份证号码的验证算法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-3-7 22:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:其他编程应用
真是!简洁的公式胜过繁杂的代码啊!最简洁的代码恐怕也比这个公式烦琐,Excel的使用真是各有所长!

TA的精华主题

TA的得分主题

发表于 2004-3-7 23:12 | 显示全部楼层
看到此贴,就想到了我前段时间的惨痛经历,虽然与此贴的技术无太多关系 我原来的15位身份证未三位是001,因期限已满换新的18位身份证后除加了年 19二位外,原未三位001变成了0053。当时领新证也没在意。但前段时间在工行就遇到麻烦,当我拿着新身份证去银行更改以前的身份证信息时(--这个很有必要,假如哪天我的卡或者存折丢失了,是要凭身份证去办理挂失手续的,如果不更改为新的身份证,到时可就麻烦了),银行前台小姐竟认为我的新身份证是假的,原因就是原末三位001变成了0053,我解释说可能大多数是换新证末三位是不变,可公安部并没明文规定说是一定不能变吧。但任我如何解释,也说服不了她。非让我到换证派出所办证明。她也不想象,派出所象士匪窝,我想让他给我开证明他就开啊! 没办法,我只好把卡与存折中的钱全部取出,又重新立户存入,为了此事,整整花费了近二小时。 我想问一问,有没有知道,换发新身份证后三位数一定不能更改吗?要是这样的话,我的身份证公安机关又为什么改了呢?

TA的精华主题

TA的得分主题

发表于 2004-3-10 20:38 | 显示全部楼层
15位升18位的原则是取15位的前6位,跟2位世纪代号(如18、19、20),再跟15位余下的9位,第18位按我的公式计算出来(有可能是字母X)。

TA的精华主题

TA的得分主题

发表于 2004-3-15 10:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好,棒极了,你们太牛了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-3-15 11:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
一般来讲,15位身份证号升级为18位时只是加入了年份“19”,其余15位数字对应不变,最后一位校验码根据算法计算得出,如果检验结果是10则以 X 表示。 不过建议大家如果身份证要升级,一定要到银行先备案,我的住房公积金就因为身份证号前后不一致,4年了还不能取出,好几万啊,心痛!!!

TA的精华主题

TA的得分主题

发表于 2004-4-4 23:30 | 显示全部楼层
以下是引用chenjun在2004-2-29 23:32:00的发言: 哈哈!做一个用数组公式计算的例子。
公式还能缩短为 {{=C4&MID("10X98765432",1+MOD(SUM(MID(C4,ROW($1:$17),1)*2^(18-ROW($1:$17))),11),1)}}
[此贴子已经被作者于2004-6-20 21:56:17编辑过]

TA的精华主题

TA的得分主题

发表于 2004-4-5 08:52 | 显示全部楼层
0fEi63cM.rar (61.86 KB, 下载次数: 409)
刚学VBA 不久,编制的一些身份证函数。具有验证身份证,15升18位,查找设立身份证的省份、城市、区县,认定男女,生日等。 请各位高手指教。

TA的精华主题

TA的得分主题

发表于 2005-10-27 14:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Public Function sfzjy(sid, xb) ' As Currency '1、身份证不满15位,2、性别与身份证不符,3、出生月份出错(不在1-12) '4、出生日期出错(不在1-31范围内),5、18位校验位出错,6、18位身份证年份出借 On Error Resume Next Dim s1, s2, jym, x If xb = 1 Then x = 1 If xb = "男" Then x = 1 If xb = 2 Then x = 0 If xb = "女" Then x = 0 s1 = " 7 910 5 8 4 2 1 6 3 7 910 5 8 4 2" s2 = "10x98765432" If Len(sid) <> 15 And Len(sid) <> 18 Then sfzjy = "身份证位数错误" '测试15位身份证的信息 ElseIf Len(sid) = 15 And Val(Mid(sid, 7, 2)) < 10 Then sfzjy = "年龄好大,请多多保重!" ElseIf Len(sid) = 15 And Val(Mid(sid, 9, 2)) > 12 Then sfzjy = "出生月份错误!" ElseIf Len(sid) = 15 And Val(Mid(sid, 11, 2)) > 31 Then sfzjy = "出生日期错误!" ElseIf Len(sid) = 15 And Mid(sid, 15, 1) Mod 2 <> x Then sfzjy = "性别错误!" ElseIf Len(sid) = 15 Then newid = Left(sid, 6) + "19" + Right(sid, 9) jym = 0 For i = 1 To 17 jym = jym + Val(Mid(s1, i * 2 - 1, 2)) * Val(Mid(newid, i, 1)) Next i sfzjy = newid + Mid(s2, jym Mod 11 + 1, 1) '测试18位身份证的信息 ElseIf Len(sid) = 18 And Val(Mid(sid, 7, 2)) <> 19 Then sfzjy = "出生年错误!" ElseIf Len(sid) = 18 And Val(Mid(sid, 9, 2)) < 10 Then sfzjy = "年龄好大,请多多保重!" ElseIf Len(sid) = 18 And Val(Mid(sid, 11, 2)) > 12 Then sfzjy = "出生月份错误!" ElseIf Len(sid) = 18 And Val(Mid(sid, 13, 2)) > 31 Then sfzjy = "出生日期错误!" ElseIf Len(sid) = 18 And Mid(sid, 17, 1) Mod 2 <> x Then sfzjy = "性别错误!" Else newid = Left(sid, 17) jym = 0 For i = 1 To 17 jym = jym + Val(Mid(s1, i * 2 - 1, 2)) * Val(Mid(newid, i, 1)) Next i If Mid(s2, jym Mod 11 + 1, 1) <> Mid(sid, 18, 1) Then sfzjy = "识别码错,应为:" & Mid(s2, jym Mod 11 + 1, 1) Else sfzjy = sid End If End If End Function

TA的精华主题

TA的得分主题

发表于 2005-11-27 20:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  15位身份证对18**年出生的人的第14位好象是规定为9,可以判别后确定年份是加19还是18 [glow=255,red,2][/[move]我是根据二位高人公式做了简单的修改。[/move]glow] 2WNacto0.rar (48.96 KB, 下载次数: 332)
[此贴子已经被作者于2005-11-27 20:13:58编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-4 20:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

http://club.excelhome.net/viewthread.php?tid=151935&replyID=&skin=0

看看我的算法,你会知道数学的作用.

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 13:55 , Processed in 0.047077 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表