用自定义函数校验与获取身份证数据

合集下载

EXCEL中如何提取身份证出生日期和性别信息以及检验身份证号码的正确性

EXCEL中如何提取身份证出生日期和性别信息以及检验身份证号码的正确性

1、检验身份证号码的正确性(1)录入前可以通过下面操作避免录入错误通用公式为:=IF(LEN(D6)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(D6,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT ("1:17")))),11)+1,1)=RIGHT(D6),IF(LEN(D6)=15,ISNUMBER(--TEXT(19&MID(D6,7,6),"#-00-00"))))你也可以将上述公式放在数据有效性中,防止录入错误的身份证号。

操作方法:选择需要输入身份证的全部单元格区域,比如D6:A10,点菜单"数据"-"有效性",在"允许"的下拉框中选择"自定义",在"公式"输入上面的15位和18位通用公式,确定以后即可。

注意:公式里的"D6"是你刚才选定要输入身份证的单元格区域的第一个单元格,如果你是要在C3:C20输入身份证号,则将公式里的"D6"改为"C3"。

另外,你也可以先设置好某单个单元格的数据有效性(这时公式的D6改为选定的单元格),再用格式刷将其格式刷到其他需要相同设置的单元格。

(2)录入后可以通过下面操作检测录入错误通用公式为:=IF(LEN(D6)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(D6,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(D6),IF(LEN(D6)=15,ISNUMBER(--TEXT(19&MID(D6,7,6),"#-00-00"))))将上面的公式放到B2单元格,如果结果为TRUE,则身份证号是正确的,结果为FALSE则是错误的。

给你5个实用Excel函数公式搞定盘踞在Excel表格中的身份证

给你5个实用Excel函数公式搞定盘踞在Excel表格中的身份证

给你5个实用Excel函数公式搞定盘踞在Excel表格中的身份证在工作中,将身份证输入表格的大多是财务或是HR,本以为只要输入数字就可以了,可是,当大家做这事儿的时候,有多少人发现,这个身份证真的很抽风……如果你正做着有关工作,那么就一起来看一下以下内容吧,让你的Excel操作轻松碾压各种有关身份证的信息。

以下是一组和身份证有关的函数公式,如果你是财务人员或是一名HR,那就一起来看一下啦:1、查找重复身份证号码在Excel表格上方输入【=IF(COUNTIF(A:A,A1&"*")>1,"重复","")】,其中“A1”可以自定义修改。

说明:COUNTIF函数在计算文本型数字时,会默认按数值型进行处理,但Excel中的数字精度只有15位,但身份证号码是18位,因此会把前15位相同的身份证全部识别为相同的内容。

在第二参数后加上一个星号 &"*",就是告诉Excel,要查找包含A1单元格内容的文本,通过这样变通的手段,COUTNIF函数就会乖乖听话啦。

2、出生年月来可计算年龄在Excel表格上方输入【=DATEDIF(A4,TODAY(),"y")】,然后按回车键,即可在其中“A4”可以自定义修改。

说明:DATEDIF函数用于计算两个日期之间的间隔。

=DATEDIF(开始日期,结束日期,指定要返回的类型);第三参数Y表示年,M则表示月。

TODAY函数返回系统当前的日期。

DATEDIF函数是隐藏函数,输入时没有屏幕提示,需要手工录入。

3、根据身份证号计算出生年月在Excel表格上方输入【=--TEXT(MID(A2,7,8),"0!/00!/00")】,然后按回车键,即可在其中“A2”可以自定义修改。

说明:身份证号码中的第8位到15位是出生年月信息。

先用MID函数从A2单元格的第7位开始,提取出8个字符,即可得到身份证号中的出生年月日信息。

最新整理WPS表格提取身份证信息的方法详解

最新整理WPS表格提取身份证信息的方法详解

W P S表格提取身份证信息的方法详解身份证相关信息包括籍贯、性别、出生年月日、农历年、属相、生日、星座、出生至今年数、出生至今天数和判断证件有效性,那么怎样把这个信息都提取出来呢?想知道的朋友可以看看以下W P S操作技巧教程,或许对你有帮助!W P S表格提取身份证信息的方法一、原籍贯:(公式代码)=I F E R R O R(I F(L E N B(A2)=15,I F E R R O R(v l o o k u p(V A L U E(M I D(A2,1,6)),S h e e t4!$A:$B,2,0),V L O O K U P(V A L U E(M I D (A2,1,4)00),S h e e t4!$A:$B,2,0)),I F E R R O R(I F E R R O R( V L O O K U P(V A L U E(M I D(A2,1,6)),S h e e t3!$A:$E,5,0),V L O O K U P(V A L U E(M I D(A2,1,4)00),S h e e t3!$A:$E,5,0)),V L O O K U P(V A L U E(M I D(A2,1,2)0000),S h e e t3!$A:$E,5,0) )),证件无效)运算说明:此运算运用了i f e r r o r逻辑函数,主要判断后面的函数计算结果,如果经过后面所有函数的判断都无法得到结果的,就在此单元格显示证件无效。

(此函数在后面的单元格(除判断身份证有效单元格外)都用到此函数,同理,后面就不一一解释此函数的用法。

i f函数主要是判断a2单元格的字符数(l e n函数)是否满足15位,如果是15位的话,则从a2单元格里提取(m i d函数)前6位数字(从第一位提取,6个字符)在数据库中查找(v l o o k u p函数)满足此条件的原籍贯所在地,此单元中后面的v l o o k u p函数也是此用途。

excel表格输入身份证正确性实时验证

excel表格输入身份证正确性实时验证
Excel 表格身份证输入 实时验证
一、示例使用的是 wps2019版 二、主要利用数据有效性 进行设计 三、身份证验证:
1、长度 2、X大写 3、逻辑验证
一、需要设置数据位置 如下图,主要位置在D2单元格
二、选中D2单元格,从菜单上方选择--数据--有效性--下拉-数据有效性
三、弹出对话框
数据有效-选择设置项 一、允许下拉框中选择为自定义 二、公式输入加入下面数据验证公式 注意:本公式只针对D2单元格,如有变 动请将下面的所有D2进行查找替换。
• 首先 公式计算获得验证结果,判断正确返回1,错误返回0 • 返回值 与 1 进行比较 结果=1 返回 True或 False • 数据有效性 根据返回的False 进行验证,False则弹出警告
三、确定即可,保留忽略空值。可以考虑在出 错警告里 添加提示
四、设置完成确定后D2单元格就可以自动验证; 然后将光标放到D2单元格右下角,变为实心十字后, 按住下拉覆盖要输入的单元格即可。
此处会自动累加D2 变为D3。
公式解释:
=IF(LEN(D2)=0,1,IF(LEN(D2)=15,1,IF(LEN(D2)<>18,0,IF(CHOOSE(MOD(SUM(MID(D 2,1,1)*7+MID(D2,2,1)*9+MID(D2,3,1)*10+MID(D2,4,1)*5+MID(D2,5,1)*8+MID(D 2,6,1)*4+MID(D2,7,1)*2+MID(D2,8,1)*1+MID(D2,9,1)*6+MID(D2,10,1)*3+MID(D 2,11,1)*7+MID(D2,12,1)*9+MID(D2,13,1)*10+MID(D2,14,1)*5+MID(D2,15,1)*8+ MID(D2,16,1)*4+MID(D2,17,1)*2),11)+1,1,0,"X",9,8,7,6,5,4,3,2)=IF(ISNUMBER(RI GHT(D2,1)*1),RIGHT(D2,1)*1,"X"),1,0))))=1

ExcelVBA学习之身份证号校检自定义函数

ExcelVBA学习之身份证号校检自定义函数

ExcelVBA学习之身份证号校检自定义函数Excel VBA学习之身份证号校检自定义函数【问题提出】上次学习了一个用Excel函数的方法来解决这个问题,但是函数太长了,有时会忘记:=IF(LEN($B2)=18,IF(MID('10X98765432',MOD(SUMPRODUC T(VALUE(MID($B2,ROW($1:$17),1)),说明!$B$2:$B$18),11) 1,1)=RIGHT($B2,1),'合法','不合法'),'长度错误')能不能简单一点,工作时不用那么辛苦的输入这个函数【知识学习】自定义函数的基本语法:我们在Excel中使用的内置函数,有的没参数,比如Rand函数,有的有参数,比如Vlookup,参数还好几个,有些参数是区域,有些是数字。

我们今天就从最基本的开始,先来学习下定义一个没有参数和一个只有一个参数的函数,通过最基本的例子来掌握自定义函数的基本语法结构。

自定义函数的语法结构:Function 函数名(参数1,参数2,……,参数n)代码函数名 = 代码执行的结果End Function语法很简单,看来难在了怎么得到结果的这段代码上。

好了,下面我们就开始自定义一个没有参数的函数吧。

【写一个自定义函数用于检测身份证号是否正确】''====用于校检身份证号是否正确的自定义函数=========Function ID(n)Dim h, s, t, z As Integerwi = Array('7', '9', '10', '5', '8', '4', '2', '1', '6', '3', '7', '9', '10', '5', '8', '4', '2')y = Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2') If Len(n) = 18 ThenFor h = 0 To 16r = Mid(n, h 1, 1)If IsNumeric(r) = False ThenID = '第 ' & h 1 & ' 位为非法字符'Exit FunctionEnd Ifs = s r * wi(h)Next ht = s Mod 11If UCase(Mid(n, 18)) = y(t) ThenID = '身份证号码正确'ElseID = '身份证号码不正确'End IfElseID = '位数少于18位'End IfEnd Function【使用方法】【测试成功】=====The End=====。

Excel校验身份证号码的自定义函数

Excel校验身份证号码的自定义函数

校验居民身份证号码函数 在日常工作中,我们经常用电子表格输入身份证号码,往往出现输入错误,校对麻烦。

由于身份证中第十八位数字的计算方法较为繁琐,下面提供了一个自定义函数,很方便。

=jysfz(身份证号码 字符型)示例:340524************←号码#NAME?=jysfz(A7)#NAME?=jysfz("340524************") 340524************#NAME? 340524************#NAME?340524************#NAME?340524************#NAME? 340524************#NAME? 340524************#NAME? 3405241952060122188#NAME?34052419710702233#NAME? 3405241964100622#NAME? 340524************#NAME? 34052419641006225想#NAME?#NAME?这样也有错!#NAME? 身份证的号码是按照国家的标准编制的,由18位组成:前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第15、16位为乡镇代码(一个乡镇可能有多个代码),第17位代表性别(奇数为男,偶数为女),第18位为校验码。

作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。

Ⅹ是罗马数字的10,用Ⅹ来代替10,可以保证公民的身份证符合国家标准。

但是我国的居民身份证在升位后,一些人的尾号变成了X,这部分人在工作生活中,例如去银行存取钱、去汽车公司租赁汽车或者报名参加考试等等过程中,往往不被检验者理解,认为是假身份证,这样的误会给很多人的生活带来不便。

函数自动提取身份证号码信息

函数自动提取身份证号码信息

函数自动提取身份证号码信息大家知道,目前的身份证号码有两种格式,一种是15位号码(如340501*********),一种是18位号码(如340503************)。

在15位号码中,第7—12位数字(如761217)表示持证人的出生时间(如1976年12月17日),第15位数字(如2)表示持证人的性别(奇数为“男”,偶数为“女”);在18位号码中,第7—14位数字(如19700109)表示持证人的出生时间(如1970年1月9日),第17位数字(如1)表示持证人的性别。

一、信息的提取、判断和自动显示此处,假定身份证号码保存在C列中,性别和出生时间分别保存在D列和E列中。

1、性别的自动显示2、①选中D2单元格,输入公式:=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=0,"女","男"),输入完成后,按下“Enter”键进行确认,第1位员工的性别则自动显示在D2单元格中[如图1]。

上述函数式中涉及到的几个函数的含义分别是:LEN(C2)函数,用于统计C2单元格中字符串的字符数目。

MID(C2,15,1)函数,用于从C2单元格中字符串的第15位开始提取1个字符。

MOD(number,divisor)函数,用于给出数字number除以数字divisor后的余数。

IF()函数,是一个逻辑判断函数。

上述函数式的意思是:IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)):如果[IF]C2单元格中字符串的字符数是15[LEN(C2)=15],则从第15位开始,提取C2单元格字符串中的1个字符[MID(C2,15,1)];如果不是15位,则从第17位开始,提取1个字符[MID(C2,17,1)]。

=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=0,"女","男"):如果[IF]提取出来的数值[IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1))]除以“2”后余数为“0”[MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=0],则显示为“女”,反之显示为“男”。

为EXCEL增加身份证效验函数

为EXCEL增加身份证效验函数

为EXCEL增加身份证效验函数经常要输入身份证信息,反复核对还是出错。

上次的高考报名,根据户口簿输入的学生身份证信息,结果派出所出错了,户口簿上的身份证信息与身份证上的不一致,差点误了大事。

为此,编写了如下的自定义函数sfzxy(SFZH As String)。

打开EXCEL,选择工具\宏\VISUAL BASIC编辑器\,在VBA编辑环境中插入模块1,将下面的代码复制到模块1中,保存后可以EXCEL中象调出excel中的内置函数一样使用。

例如:=SFZXY(A1)‘A1中有身份证号,未位正确返回正确的末位数,不正确时返回正确数的相反数身份证号长度出错返回#号Function SFZXY(SFZH As String)'18位身份证号校验码计算工具,Dim I, N As IntegerDim S As StringSFZH = Trim(SFZH)If Len(SFZH) > 16 And Len(SFZH) < 19 ThenFor I = 1 To 17N = N + Val(Mid(SFZH, I, 1)) * (2 ^ (18 - I) Mod 11)Next IN = (12 - (N Mod 11)) Mod 11If N = 10 ThenS = "X"ElseS = Trim(Str(N))End IfIf Right(SFZH, 1) = S ThenSFZXY = SElseSFZXY = "-" & SEnd IfElseSFZXY = "#"End IfEnd Function。

excel身份证验证公式

excel身份证验证公式

excel身份证验证公式
Excel身份证验证公式
1.验证格式:数据校验公式可以验证身份证号码是否正确和合法。

Excel中可以使用“LEN()”函数来确定身份证号码字符串的长度,再与18位数对比来明确证书是否存在。

2.验证位数:只有18位数身份证号码才能使用来进行校验,15位号码已不再使用,可以通过旧省份前两位是否是“35”、“36”或“37”来判断。

3.验证省级代码:通过省份前两位码来验证省级代码,与身份证号码前两位相对应。

4.验证出生日期:可以通过对身份证号码出生日期的部分(第7到14位)与Excel 中“LEFT()”“MID()”等函数结合,来验证身份证号码的出生日期,验证准确。

5.验证顺序号:通过身份证号码的第16位和第17位数字代表性别,第15位和第18位数字代表性别,第15位数字用于最后一位校验码的算法,如果正确,身份证号码可以正确匹配!
6.验证位:计算机通过一组算法,通过身份证号码前17位数字,计算
出一个0-10之间的数字,如果运算结果与最后一位数字相等则表示验证通过!
此外,Excel中对于身份证号码的验证,还可以利用VBA编程语言进行。

其中可以使用“If()Then()Else()”结构计算出一组结果,以决定身份证号码是否要验证成功。

身份证正确检验及验证公式

身份证正确检验及验证公式

公式二出处
EXCEL提取身份证出生日期、性别、检验身份证号码正确性
中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:
15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。
18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。
假定身份证号码在B1单元格,下面的公式可以综合判断以上三种错误:
验证公式三
=IF(OR(LEN(B1)=18,LEN(B1)=15),IF(LEN(B1)=18,IF(OR(MONTH(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,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))+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),"年份错误","")

Excel校验身份证号码的自定义函数

Excel校验身份证号码的自定义函数

校验居民身份证号码函数 在日常工作中,我们经常用电子表格输入身份证号码,往往出现输入错误,校对麻烦。

由于身份证中第十八位数字的计算方法较为繁琐,下面提供了一个自定义函数,很方便。

=jysfz(身份证号码 字符型)示例:340524************←号码#NAME?=jysfz(A7)#NAME?=jysfz("340524************") 340524************#NAME? 340524************#NAME?340524************#NAME?340524************#NAME? 340524************#NAME? 340524************#NAME? 3405241952060122188#NAME?34052419710702233#NAME? 3405241964100622#NAME? 340524************#NAME? 34052419641006225想#NAME?#NAME?这样也有错!#NAME? 身份证的号码是按照国家的标准编制的,由18位组成:前六位为行政区划代码,第七至第十四位为出生日期码,第15至17位为顺序码,第15、16位为乡镇代码(一个乡镇可能有多个代码),第17位代表性别(奇数为男,偶数为女),第18位为校验码。

作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。

Ⅹ是罗马数字的10,用Ⅹ来代替10,可以保证公民的身份证符合国家标准。

但是我国的居民身份证在升位后,一些人的尾号变成了X,这部分人在工作生活中,例如去银行存取钱、去汽车公司租赁汽车或者报名参加考试等等过程中,往往不被检验者理解,认为是假身份证,这样的误会给很多人的生活带来不便。

关于身份证信息提取的Excel函数公式

关于身份证信息提取的Excel函数公式

Excel函数公式计算技巧
一、提取性别:
以D2列【身份证号码】栏为坐标,
则C2列【性别】栏输入公式:=IF(MOD(MID(D2,17,1),2)=1,"男","女")
二、提取出生日期:
以D2列【身份证号码】为坐标,
则E2列【出生日期】栏公式为:=MID(D2,7,8)
三、提取年龄:
以D2列【身份证号码】为坐标,
则F2列【年龄】栏公式为:=YEAR(TODAY())-MID(D2,7,4)
四、提取生肖:
以D2列【身份证号码】为坐标,
则G2列【生肖】栏公式为:=MID("猴鸡狗猪鼠牛虎兔龙蛇马羊",MOD(MID(D2,7,4),12)+1,1)
五、计算工龄:
以H2列【入职时间】栏为坐标,
则I2列【工龄】栏输入公式:=DATEDIF(H2,TODAY(),"Y")
六、计算工龄工资:
以I2 列【工龄】为坐标,若工龄工资每年加50元。

则L2列【工龄工资】栏公式为:则=I2*50
七、计算合同到期日:
以H2列【入职时间】和J2【合同期限】为坐标
则F2列【合同到期日】栏公式为:=DATE(YEAR(H2)+J2,MONTH(H2),DAY(H2)-1)。

使用javascript实现身份证校验与信息提取

使用javascript实现身份证校验与信息提取

使⽤javascript实现⾝份证校验与信息提取我们先了解⼀下⾝份证是怎么校验的:将前⾯的⾝份证号码17位数分别乘以不同的系数,将这17位数字和系数相乘的结果相加,然后除以11求余,根据最后的余数对应校验码,判断⾝份证是否符合要求。

现在我们开始写代码<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><p>⾝份证号:<input type='text' id='idCard'/></p><P>出⽣⽇期:<input type='text' readonly id='age'/></P><P>性 别:<input type='radio' disabled name='sex' id='man'>男<input type='radio' name='sex' disabled id='woman'>⼥</P><P>籍 贯:<input type='text' readonly id='dess'></P><button type='button' id='btnSub'>确定</button><script src='js/jquery-1.11.3.min.js'></script><script>$("#btnSub").click(function(){var idCard = $("#idCard").val();//根据⾝份证不同的位置,截取相对应的数据var sex = idCard.substring(16,17);var num = idCard.substring(17,18);var year = idCard.substring(6,10);var month = idCard.substring(10,12);var day = idCard.substring(12,14);var age = year+"-"+month+"-"+day;var date = new Date(age);var sum = 0;var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,0];var arr2 = [1,0,'X',9,8,7,6,5,4,3,2];//判断⾝份证是否为空,或者长度有没有达到要求(这⾥规定⾝份证18位)if(!(idCard && /^[\d]{18}$/.test(idCard))){alert("⾝份证输⼊格式不对!")return false;}else{//计算第18位数是否符合要求for(var i=0;i<18;i++){sum += idCard.substring(i,i+1)*arr[i]}if(num== arr2[sum%11] || num===arr2[sum%11]){ $("#age").val(age)if(sex%2 == 1){$("#man").prop("checked","true")}else{$("#woman").prop("checked","true")}$.ajax({url:"IdCardServlet",type:"get",data:{idCard:idCard},success:function(data){$.each(data,function(index,obj){$("#dess").val(obj.detail);})}})}else{alert("⾝份证输⼊格式不对!")$("#man").removeAttr("checked")$("#woman").removeAttr("checked")$("#dess").val("");$("#age").val("");return false;}}})</script></body></html>效果图:如果需要显⽰籍贯的话,需要那对应的数字去数据库中查找显⽰。

spring自定义校验注解(身份证,手机号)

spring自定义校验注解(身份证,手机号)

spring⾃定义校验注解(⾝份证,⼿机号)实现⾃定义校验注解,ConstraintValidator接⼝/*** Defines the logic to validate a given constraint {@code A}* for a given object type {@code T}.* <p>* Implementations must comply to the following restriction:* <ul>* <li>{@code T} must resolve to a non parameterized type</li>* <li>or generic parameters of {@code T} must be unbounded* wildcard types</li>* </ul>* <p>* The annotation {@link SupportedValidationTarget} can be put on a* {@code ConstraintValidator} implementation to mark it as supporting* cross-parameter constraints. Check out {@link SupportedValidationTarget}* and {@link Constraint} for more information.** @param <A> the annotation type handled by an implementation* @param <T> the target type supported by an implementation** @author Emmanuel Bernard* @author Hardy Ferentschik*/public interface ConstraintValidator<A extends Annotation, T> {/*** Initializes the validator in preparation for* {@link #isValid(Object, ConstraintValidatorContext)} calls.* The constraint annotation for a given constraint declaration* is passed.* <p>* This method is guaranteed to be called before any use of this instance for* validation.* <p>* The default implementation is a no-op.** @param constraintAnnotation annotation instance for a given constraint declaration*/default void initialize(A constraintAnnotation) {}/*** Implements the validation logic.* The state of {@code value} must not be altered.* <p>* This method can be accessed concurrently, thread-safety must be ensured* by the implementation.** @param value object to validate* @param context context in which the constraint is evaluated** @return {@code false} if {@code value} does not pass the constraint*/boolean isValid(T value, ConstraintValidatorContext context);}1.initialize⽅法会在校验实例化后被调⽤,⼀般⽤于做些初始化⼯作。

用自定义函数校验与获取身份证数据

用自定义函数校验与获取身份证数据

用自定义函数校验与获取身份证数据
龙相明
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2014(000)016
【摘要】提出了使用Excel自定义函数自动获取身份证号码中的数据,以及对身份证进行错误及真假性校验的方法,实践证明本方法便捷高效.
【总页数】2页(P106-107)
【作者】龙相明
【作者单位】江西水利职业学院,南昌330013
【正文语种】中文
【相关文献】
1.美国国家健康研究院拓展了关于哮喘病的遗传和临床数据开放获取数据集——创建了最大的哮喘病临床和遗传数据公共获取数据集 [J], 吴思竹
2.学籍数据中身份证号有效性校验的实现 [J], 路华清;付超
3.Excel自定义函数处理身份证号码 [J], 祁志刚
4.巧用Excel函数校验身份证 [J], 孟宪宇;卢莉娜;朱成文;
5.澳门保送生身份证校验码引发的问题及解决建议——以南京师范大学为例 [J], 沈冲
因版权原因,仅展示原文概要,查看原文内容请购买。

用VBA构建身份证验证函数

用VBA构建身份证验证函数

用VBA构建身份证验证函数同学们在用VBA构建用户管理系统时,需要收集用户信息,在采集用户信息时,经常会遇到身份证信息输入混乱的情况,有的用户胡乱输入、有的输入明显错误,如何对身份证信息进行校验,规范输入信息呢?本节深入探讨用VBA代码进行身份证校验。

身份证号码的编码规则身份证号码共18位,由17位本体码和1位校验码组成。

1.前6位是地址码,表示登记户口时所在地的行政区划代码,依照《中华人民共和国行政区划代码》国家标准(GB/T2260)的规定执行;2.7到14位是出生年月日,采用YYYYMMDD格式;3.15到17位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;4.第18位是校验码,采用ISO 7064:1983, MOD 11-2校验字符系统。

一代身份证与二代身份证的区别在于:1.一代身份证是15位,二代身份证是18位;2.一代身份证出生年月日采用YYMMDD格式,二代身份证出生年月日采用YYYYMMDD格式;3.一代身份证无校验码,二代身份证有校验码。

1.区划代码校验首先,把从网上下载的行政区划代码放入名为“区划代码”的工作表中,此步骤主要是校验用户输入的前6位是否在区划代码中找到。

代码如下:arr = Worksheets("区划代码").Range("a1", Worksheets("区划代码").Range("a" & Rows.Count).End(xlUp))AreaCode = Mid(MyId, 1, 6) '提取身份证前6位IsCorrect = FalseFor i = 1 To UBound(arr)If CStr(arr(i, 1)) = AreaCode ThenIsCorrect = TrueExit ForEnd IfNextIf IsCorrect = False ThenIdCardCheck = "区划代码错误"Exit FunctionEnd If2.身份证的长度验证身份证字符长度应为18位或15位,其他长度的不符合要求If Not (Len(MyId) = 18 Or Len(MyId) = 15) ThenIdCardCheck = "身份信息位数不符合要求"Exit FunctionEnd If3.验证日期字符串是否合法(1)验证身份证信息中除最后一位是否含有字符,如果含有字符,说明不合法;(2)验证日期格式是否合法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ch e c k a n d Ge t I D Da t a Us i n g a Cu s t o m F u n c t i o n
LONG Xi a ng -mi n g
( J i a n g x i wa t e r r e s o u r c e s i n s t i t u t e, J i a n g x i Na n c h a n g 3 3 0 0 1 3, C h i n a )
Ke y wor d s: Us e r -de f i ne d Fu nc t i o n ;I D Che c k Co d e ;VBA M od u l e
公 民身份证包 含了 出身 日期 、性别等 多项数 据 , 日常大
3 - 2 ,即为 身份证 的校验码 ,如表 2 所示 。
的余数


表 2 余数 与校验码对照表
1 身份 证 结构
根据 0 中华人民共和国国家标准 G B 1 1 6 4 3 — 1 9 9 9 I 中有关
余 数 列 表 O l 2 I 3 4 5 1 6 7 1 8 9 1 0 校 验 码 对 照 表 1 0 X I 9 8 7 l 6 5 I 4 3 2
电脑编程技巧与维护
用 自定义 函数校验 与获取 身份证数 据
龙相 明
( 江西水利 职业学 院,南 昌 3 3 0 0 1 3 )

要 :提 出了 使用 E x c e l 自 定义函数 自动获取 身份证号码 中的数据 ,以及 对身份证进行错误及真假 性校 验的方法 ,
实践 证 明本 方 法便 捷 高效 。 关键 词 : 自定 义 函数 ; 身 份 证校 验码 ; V B A 模 块
前 l 7 位 1 2 3 4 5 6 7 8 9 O l 2 3 4 5 6 7





人到 E x c e l( 2 0 0 3或 2 0 0 7版 )系统 中,就可 以如 使用 内置函
数一 样 ,既可 以 自动获 取身份证号 码 中的数 据 ,又可 以对身 份证进行错误及真假性校验 ,便捷高效
3 校验 与获取 身份 证数 据相 关 自定义 函数 VB A模 块
通过实践 ,根据身份证结 构及校验码算 法 ,编写 了 E x c e l
自定义函数的 V B A模块 ,其 中包括 3个 自定 义函数 。即校 验 码 校验 自定义 函数 ( T o c h e k ); 获取 出生 日期 自定 义 函数 ( T o . d a t e ); 获取性别 自定 义函数 ( T o s e x ) 。该 函数模块 校验 了身份 证 中的校验 码是否正 确 ; 日期是 否合 法 :是 否含有 0 - 9及 X 以外 的非法 字符 。通 过调用这些 自定 义函数 7 2 1 6 2 1 5 2 ^ 1 4 2 1 3 2 1 2 2 ^ l 1 2 l 0 5 1 2 2 5 6 l 2 8 6 4 3 2 1 6 8 4 2 7 9 1 0 5 8 4 2 1 6 3 7 9 1 0 5 8 4 2
Ab s t r a c t :T h e p a p e r c o me s u p w i t h a me t h o d u s e E x c e l u s e r — — d e i f n e d f u n c t i o n a u t o ma t i c a c q u i r e t h e d a t a s t r i n g i n I d e n t i i f ・ - c a t i o n n u mb e r a n d v e r i f y t h e e r r o r a n d t r u e o r f a l s e v a l u e . I n p r a c t i c e , t h e me t h o d p r o v e s t o b e e f i f c i e n t a n d e f e c t i v e .
E x c e l自定 义 函数 功 能 ,编 写 了 自定 义 函数 V B A模 块 ,将 其 输
通过 上述算法 得知 ,如果余 数是 2 ,就会 在身份证 的第 1 8 位数字上 出现罗 马数 字 x。如 果余 数是 1 O ,身份证 的最后一
位 号码 就是 数 字 2 。 表1 身 份 证 号 码 各 位 的 系 数
量 的表格 都需要填写人 的身份证号码 、出生 日期等数据 。E x —
c e l 是常用 的一种办公 软件 ,通常 情况 .很 多用 户在 E x c e l 表 格 中输入 了身 份证号后 .仍需逐个 输入 出生 日期 、性别 等数 据 ,或者用 内置 函数构 造较为复杂 冗长 的公 式来 获得相 关数 据 ,这种重复操 作T作 比较烦琐容 易 出错 。通过 实践 ,使 用
公 民身份号码 的规定 ,公 民身份号码是特 征组合码 ,由 1 7位 数字本 体码和一 位数字校 验码组成 。排列顺 序从左 至右依 次
为 :第 1 — 6 位 数字 ,表示编码对象常住户 口所 在县 ( 市 、镇 、 区 )的行政 区划代码 ;第 7 — 1 4位数 字 ,表示编码对象 出生的
相关文档
最新文档