打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel VBA学习之身份证号校检自定义函数

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

【问题提出】上次学习了一个用Excel函数的方法来解决这个问题,但是函数太长了,有时会忘记:

=IF(LEN($B2)=18,IF(MID('10X98765432',MOD(SUMPRODUCT(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 Integer

wi = 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 Then

    For h = 0 To 16

        r = Mid(n, h 1, 1)

        If IsNumeric(r) = False Then

              ID = '第 ' & h 1 & ' 位为非法字符'

              Exit Function

    End If

            s = s r * wi(h)

    Next h

    t = s Mod 11

    If UCase(Mid(n, 18)) = y(t) Then

           ID = '身份证号码正确'

    Else

           ID = '身份证号码不正确'

    End If

Else

    ID = '位数少于18位'

End If

End Function


【使用方法】

【测试成功】

=====The End=====

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel VBA 自己手写一个函数
构建一个属于自己的函数
VBA
Excel中的自定义函数(自定义函数的基础内容)
咕吧陪你学:小白学excel VBA入门sub function入圈观摩不迷惘!
【新提醒】Excel|如何自定义从右第N个字符开始取N个字符的函数?|定义,字符
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服