加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何在Excel中判断身份证号码的真伪?

(2007-05-14 23:43:26)
分类: 知海拾贝

我们经常在Excel中要处理身份证号码信息,如何判断身份证号码的真伪呢?对于18位的身份证号码,由于有校验位的存在,因此可以利用校验位判断一个号码是否合法——即是否符合身份证号码的编码规则。

 

VBA可以很简单地帮助我们实现这个目的,首先在Excel中添加宏代码如下:

 

Public Function CheckID(ByVal ID18 As String) As String

        Dim Ai(17) As Integer

        CC = "10X98765432"

        Wi = Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)

        s = 0

        For i = 0 To 16

            Ai(i) = CInt(Mid(ID18, i + 1, 1))

            s = s + Ai(i) * Wi(i)

        Next i

        CheckID = Mid(CC, s Mod 11 + 1, 1)

End Function

 

这样我们就有了CheckID这个函数可以调用。在Excel表单中,假设身份证号码放在A1单元格,则可以使用公式:=if(MID(A1,18,1)=checkID(A1),"ok","Err")来确认该18位身份证号码是否合法,考虑到15位的情况,可以写得稍微复杂一点以增强容错性:

 

=IF(LEN(A1)=15,"---",IF(LEN(A1)=18,IF(MID(A1,18,1)=checkID(A1),"ok","Err"),"Err"))

 

这样,如果是15位身份证号码,则显示“---”,如果是18位身份证号码,并且符合校验规律,则显示“ok”,其他情况下,显示“Err”,是不是很简单?

 

PS. 如何添加宏代码——方便VBA的菜鸟:

非常简单:

 

第一步:选择菜单“工具”-“宏”-“Visual Basic编辑器”;

第二步:在“Microsoft Excel对象”上点右键,选择“插入”-“模块”;

第三步:双击新插入的“模块”,在右边的编辑窗口中拷贝上面的宏代码即可。

0

阅读 收藏 喜欢 打印举报/Report
前一篇:咬文嚼字
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有