• 湖北省新全民健身示范工程全面铺开 今年预计投入2亿元 2018-06-19
  • 新人斑马线上拍婚纱照摆造型 来往车辆被"逼停" 2018-06-19
  • 酒驾男子进工地被维权居民阻拦 起冲突后将其轧死|酒驾|工地|维权 2018-06-19
  • 秦始皇帝陵博物院再创新高 2017年接待游客685万人 2018-06-19
  • “慰安妇”及领土问题引争端 韩日关系再起波澜 2018-06-18
  • 崔世安:特区政府支持澳门青年到内地实习和学习-澳门-时政频道-中工网 2018-06-18
  • 西成高铁可刷身份证乘车 2018-06-18
  • 国家卫健委:未来老人照护的主体应是社区和家庭 2018-06-18
  • 4月用电量增速回升至7.8% 2018-06-17
  • 白色污染带来生存危机 限塑令实施十年效果难言满意-中工博客-中工网 2018-06-17
  • 明年国际油价稳中看涨 电动车应用或催生原油需求拐点 2018-06-16
  • 大型儿童歌舞剧《东方梦娃》首演 2018-06-16
  • 北京警方全面启动春运安保工作 抓获嫌疑人1600余人 2018-06-16
  • 陕西小贷行业规模位居全国中游 19个省份小贷公司减少|陕西|小贷-要闻 2018-06-15
  • 黄毅清凌晨爆料:赵薇已经离婚!赵薇工作室辟谣! 2018-06-15
  • 身份证号码校验函数演示

    时间:2012-05-23   作者:snow   来源:互联网

    身份证号码举例

    身份证整个号码的含义是什么?

    18位身份证号码各位的含义:

    1-2位省、自治区、直辖市代码;
    3-4位地级市、盟、自治州代码;
    5-6位县、县级市、区代码;
    7-14位出生年月日,比如19670401代表1967年4月1日;
    15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;
    18位为校验码,0-9和X。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。
    举例:
    130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001,2为校验码。

    15位身份证号码各位的含义:

    1-2位省、自治区、直辖市代码;
    3-4位地级市、盟、自治州代码;
    5-6位县、县级市、区代码;
    7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别;
    13-15位为顺序号,其中15位男为单数,女为双数;
    与18位身份证号的第二个区别:没有最后一位的校验码。

    举例:
    130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001。

    Excel身份证号码校验实例

    身份证号码是按照一定规律编制的,是个人身份的有效证明,每个人只有一个号码,且不会重复,因而被各单位各部门广泛应用在相关名册中。在大量的身份证号码录入过程中,由于抄写或录入等原因,可能会弄错了某位数字,如果录错了任何一位数字,计算出来的校验码就不一样。根据这一特点,本函数可以对已录入的大批量身份证号码进行校验,如果校验未通过,则说明你录入的号码中必定是某位数字错了,应及时更正,以保证身份证号码正确有效,如果录入的是第一代15位身份证号码,本函数将返回18位号码,使身份证号码保持统一的位数。

    代码如下:


    Function IDcheck(ID)                                                        '身份证号码校验函数
    Dim s, i As Integer
    Dim e, z As String
    Part1: '----------------------------身份证号码合法性检查---------------------------------------
    If Not (Len(ID) = 18 Or Len(ID) = 15) Then                                            '位数检验
       IDcheck = "位数错误"
       Exit Function
       Else
       If Len(ID) = 15 Then ID = Left(ID, 6) & "19" & Right(ID, 9)
       If IsNumeric(Left(ID, 17)) = False Or InStr(ID, ".") > 0 Then                      '字符检验
          IDcheck = "字符错误"
          Exit Function
       End If
       On Error Resume Next                                                               '日期检验
       If DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) < 1 Or _
          DateValue(Mid(ID, 7, 4) & "-" & Mid(ID, 11, 2) & "-" & Mid(ID, 13, 2)) > Date Then
          IDcheck = "日期错误"
          Exit Function
       End If
    End If
    Part2: '-----------------------------校验码的生成及检查----------------------------------------
    s = 0
    For i = 1 To 17
       s = s + Val(Mid(ID, 18 - i, 1)) * (2 ^ i Mod 11)
    Next
    e = Mid("10X98765432", (s Mod 11) + 1, 1)                                           '生成校验码
    If Len(ID) = 18 Then
       z = UCase(Right(ID, 1))
       If z = e Then                                                                    '校验码对比
          IDcheck = "通过"
          Else
          IDcheck = "校验未通过"                   '如果要返回校验码,请把本行语句改为:IDcheck = e
       End If
       Else
       IDcheck = ID & e                                                         '15位身份证号码升位
    End If
    End Function                                                      '编写 474589791 2011年6月11日



     

    使用方法:

    一、建立函数 

    1、打开excel,点击菜单的“工具→宏→录制新宏”,弹出录制新宏对话框。

      


    2、在“保存在”下面选择“个人宏工作簿”,点击确定。(选择个人宏工作簿有2大好处:①使本函数可应用于当前计算机中所有的excel工作表;②不受宏安全性设置高低的影响。)




    3、在弹出的录制宏工具中点击“停止录制”按钮,结束宏的录制。




    4、点击菜单的“工具→宏→Visual Basic 编辑器”,打开编辑器。



    5、在编辑器中可以看到刚才录制的代码“Sub macrol() ”,还有录制时间等内容。选中编辑器中的代码并删除。
         注:如果编辑器中没有出现PERSONAL.XLS - ???(代码),请在左边“工程资源管理器”中找到PEROSNAL.XLS下面的???并双击。




    6、把以上代码复制到编辑器中,保存并退出编辑器。至此,你就可以使用本函数了。



     

    二、函数的使用

    1、打开名册,点击身份证号码后面用于存放校验结果的空白单元格,点击插入函数按钮 fx ,弹出插入函数对话框。




    2、在“选择类别”中选择“用户定义”类。




    3、可以看到“选择函数”下面出现了刚才保存的 PERSONAL.XLS!IDcheck 函数,选中该函数,点击确定按钮,弹出“函数参数”对话框。




    4、点击工作表上对应的身份证号码单元格(下图为A2单元格),点击“确定”按钮。




    5、然后向下填充,得到其他身份证号码的检验结果。

    发表评论