您好,欢迎访问三七文档
身份证号码校验实例身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持统一的位数。代码如下:FunctionIDcheck(ID)'身份证号码校验函数Dims,iAsIntegerDime,zAsStringPart1:'----------------------------身份证号码合法性检查---------------------------------------IfNot(Len(ID)=18OrLen(ID)=15)Then'位数检验IDcheck=位数错误ExitFunctionElseIfLen(ID)=15ThenID=Left(ID,6)&19&Right(ID,9)IfIsNumeric(Left(ID,17))=FalseOrInStr(ID,.)0Then'字符检验IDcheck=字符错误ExitFunctionEndIfOnErrorResumeNext'日期检验IfDateValue(Mid(ID,7,4)&-&Mid(ID,11,2)&-&Mid(ID,13,2))1Or_DateValue(Mid(ID,7,4)&-&Mid(ID,11,2)&-&Mid(ID,13,2))DateThenIDcheck=日期错误ExitFunctionEndIfEndIfPart2:'-----------------------------校验码的生成及检查----------------------------------------s=0Fori=1To17s=s+Val(Mid(ID,18-i,1))*(2^iMod11)Nexte=Mid(10X98765432,(sMod11)+1,1)'生成校验码IfLen(ID)=18Thenz=UCase(Right(ID,1))Ifz=eThen'校验码对比IDcheck=通过ElseIDcheck=校验未通过'如果要返回校验码,请把本行语句改为:IDcheck=eEndIfElseIDcheck=ID&e'15位身份证号码升位EndIfEndFunction'编写4745897912011年6月11日使用方法:一、建立函数1、打开excel,点击菜单的“工具→宏→录制新宏”,弹出录制新宏对话框。2、在“保存在”下面选择“个人宏工作簿”,点击确定。(选择个人宏工作簿有2大好处:①使本函数可应用于当前计算机中所有的excel工作表;②不受宏安全性设置高低的影响。)3、在弹出的录制宏工具中点击“停止录制”按钮,结束宏的录制。4、点击菜单的“工具→宏→VisualBasic编辑器”,打开编辑器。5、在编辑器中可以看到刚才录制的代码“Submacrol()”,还有录制时间等内容。选中编辑器中的代码并删除。注:如果编辑器中没有出现PERSONAL.XLS-模块1(代码),请在左边“工程资源管理器”中找到PEROSNAL.XLS下面的模块1并双击。6、把以上代码复制到编辑器中,保存并退出编辑器。至此,你就可以使用本函数了。二、函数的使用1、打开名册,点击身份证号码后面用于存放校验结果的空白单元格,点击插入函数按钮fx,弹出插入函数对话框。2、在“选择类别”中选择“用户定义”类。3、可以看到“选择函数”下面出现了刚才保存的PERSONAL.XLS!IDcheck函数,选中该函数,点击确定按钮,弹出“函数参数”对话框。4、点击工作表上对应的身份证号码单元格,点击“确定”按钮。5、然后向下填充,得到其他身份证号码的检验结果。
本文标题:身份证号码校验实例
链接地址:https://www.777doc.com/doc-1986863 .html