ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 839|回复: 1

[分享] 18位身份证合法性校验函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-8-10 14:28 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 lbpp 于 2021-8-10 21:43 编辑
  1. Function 身份证校验(ByVal sID_Code As String) As Boolean

  2. ' lit_bear_pp@163.com
  3. ' 2021-08-10

  4. ' 本代码可校验身份证的合法性(含校验位)
  5. ' 参考文档 GB 11643-1999
  6. ' http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=080D6FBF2BB468F9007657F26D60013E

  7.     Dim ci As String        '身份证号中的单个字符
  8.     Dim ai As Integer
  9.     Dim Wi As Integer
  10.     Dim Sum_aiwi As Integer
  11.     Sum_aiwi = 0

  12.     Dim bReturn As Boolean
  13.     bReturn = False
  14.    
  15.     Dim i As Integer
  16.         
  17.     sID_Code = Trim(sID_Code)

  18.     Const ID_PATTERN As String = "^\d{17}[0-9Xx]$"  '身份证长度及组成模式校验

  19.     Dim obj_Regexp As Object
  20.    
  21.     Set obj_Regexp = CreateObject("VBScript.RegExp")
  22.     With obj_Regexp
  23.         .Global = True
  24.         .pattern = ID_PATTERN
  25.     End With

  26.     If obj_Regexp.test(sID_Code) Then
  27.    
  28.         ' 合法性校验
  29.         For i = 1 To 18
  30.             ci = Mid(sID_Code, i, 1)

  31.             If ci = "X" Then
  32.                 ai = 10
  33.             Else
  34.                 ai = val(ci)
  35.             End If

  36.             Wi = 2 ^ (19 - i - 1) Mod 11

  37.             Sum_aiwi = Sum_aiwi + ai * Wi

  38.         Next

  39.         If Sum_aiwi Mod 11 = 1 Then
  40.             bReturn = True
  41.         End If

  42.     End If

  43.     身份证校验 = bReturn

  44. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-23 17:08 | 显示全部楼层
好代码难求。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-20 03:21 , Processed in 0.033411 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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