Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7841|回复: 8

[已解决]如何判定身份证号码是正确的

[复制链接]
发表于 2010-3-8 20:12 | 显示全部楼层 |阅读模式

如题,如何判定身份证号码是正确的?谢谢

最佳答案
2010-3-8 20:40
{=OR(LEN(A2)=15,IF(LEN(A2)=18,MID("10X98765432",MOD(SUM(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2)))}
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-3-8 20:19 | 显示全部楼层

根据《中华人民共和国国家标准GB 11643-1999》中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

先引入公式:

uploads/200709/21_204230_1.jpg
uploads/200709/21_204643_1.jpg


计算公式令结果为 Y,Y的计算公式为:Y = mod(S, 11)根据下表找出 Y 对应的校验码即为要求身份证号码的校验码C。
uploads/200709/21_205116_1.jpg


例如:假设某女性居民的15位身份证号码是320105820927512,32表示江苏省,01表示南京市,05表示鼓楼区,820927表示1982年9月27日。512表示是该地区同年同月同日的第512人,其中2表示是女性。那么,升级为18位后的号码为32010519820927512C。下面就根据公式来计算C的值。
uploads/200709/21_214620_1.jpg

Y = mod(S, 11)=MOD(313,11)=5
根据校验值对应表,可知C=7,该人员身份证号码为:320105198209275127

又如:某男性公民身份证号码的本体码为34052419800101001
uploads/200709/21_213847_1.jpg
Y = mod(S, 11)=MOD(189,11)=2
查表得该人员身份证号码为:34052419800101001X
评论Feed 评论Feed: /feed.asp?q=comment&id=1138
回复

使用道具 举报

 楼主| 发表于 2010-3-8 20:24 | 显示全部楼层

谢谢,我想问的是,如果在表格中设置有效性如何设置?
回复

使用道具 举报

发表于 2010-3-8 20:28 | 显示全部楼层

身份证一般是15或18位,

根据这点数据有效性——序列,输入公式=or(len(区域)=15,len(区域)=18)

回复

使用道具 举报

 楼主| 发表于 2010-3-8 20:37 | 显示全部楼层

15或18位只是数字上的个数,如何能够判定不存在的15或18位身份证号?
回复

使用道具 举报

发表于 2010-3-8 20:40 | 显示全部楼层

我也发过一个小表格,你可以找一下。
回复

使用道具 举报

发表于 2010-3-8 20:40 | 显示全部楼层    本楼为最佳答案   

{=OR(LEN(A2)=15,IF(LEN(A2)=18,MID("10X98765432",MOD(SUM(MID(A2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2)))}
回复

使用道具 举报

发表于 2010-3-9 17:21 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

匿名  发表于 2014-9-19 08:16
{:25:}
回复

使用道具

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 02:44 , Processed in 0.657581 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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