竭诚为您提供优质文档/双击可除
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列数码以示其
1 9
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)
2 9
)+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位身份证的年份是否合法。这里的
关键是如何判断日期是否合法。现将判断方法介绍如下:
先用mid函数取得身份证中的年月日,用乘1的方法转
换为数值,用date函数转换成一个日期。这一转换过程中,
超范围的月份和日期同样可以正确转换,比如月份数为15,
转换后月份数为3,而年份数已经加上1,又如19630835转
换后就成了1963年9月4日。这时我们用month、day两个
函数从转换后的日期中分别取出月日与身份证中原有的月
日比较,只要有一项不符该日期就是不合法。
该判断方法不错,缺点是公式太长。
欢迎各位大侠批评指正。
根据网友的提供资料,现有一种更加简单的判断公式如
下
:
3 9
=iF(iseRRoR(1*text((len(b1)=15)*19&mid(b1,7,6+(len(
b1)=18)*2),"#-00-00")),"错误","")
补充:预防身份证号码输入时长度和日期错误的方法:
选中b列,有"数据"→"有效性"→"设置"→"允许"选择"
自定义"→输入下面的公式
=not(oR(iseRR(--text(mid(b1,7,len(b1)/2-1),"#-00-00
")),and(len(b1)15,len(b1)18)))
点击"确定"即可。
身份证判断男女
=iF(mod(iF(len(a1)=15,mid(a1,15,1),mid(a1,17,1)),2)
=1,"男","女")
身份证提取日期
=iF(len(c3)=18,mid(c3,7,4)&"-"&mid(c3,11,2)&"-"&mid
(c3,13,2),"19"&mid(c3,7,2)&"-"&mid(c3,9,2)&"-"&mid(
c3,11,2))
篇三:如何用excel验证身份证号码是否符合规则
excel中如何提取身份证出生日期、性别、检验身份证
号
码的正确性
4 9
中国居民身份证号码是一组特征组合码,原为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、提取性别信息
5 9
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(indiRe
ct("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位后的通用公式为:
6 9
=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"))))
由于目前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改为选定的单元格),再用格式刷将其格式刷到其他需要
7 9
相同设置的单元格。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),a
2)
6、18位转换为15位
=iF(len(a2)=18,leFt(Replace(a2,7,2,),15),a2)
7、示例
表中公式:
b2=iF(len(a2)=18,mid("10x98765432",mod(sumpRoduct(m
id(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"),)
8 9
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)
9 9
本文发布于:2023-05-24 11:26:35,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/falv/fa/86/105583.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |