excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel VBA 提取数字/自定义函数/正则表达式/批量提取电话号码

本文于2023年5月6日首发于本人同名公众号:Excel活学活用,更多文章敬请关注

☆本期内容概要☆

  • 自定义函数-多种方式提取数字

  • 正则表达式:简介

昨天我们分享了一篇文章Excel VBA 字母组合/自定义函数组合数组元素/数组元素花样组合,在文章里我们运用到正则表达式的方法。

正则表达式(Regular Expression),又称为“正则式”、“规则表达式”、“常规表示法”,是一种用来匹配、查找、替换字符串的工具。它通过一定的符号、元字符和操作符的组合来表达一个特定的模式,从而匹配符合该模式的字符串。关于正则表达式的基本使用方法我们放在第二条文章。

今天我们分享的是一个提取0-9数字的自定义函数GetNum,在工作表、VBA中均可使用。

函数使用:

1、A列我用mid函数、randbetween函数等模拟了一些文本与数字混合的字符串。

2、B列是以前的一个函数,可能是网上抄来的,记不清了。不管它,留着吧。

3、C列用GetNum函数,取A列字符串中的数字,不带参数,表示提取所有数字。

4、D列用GetNum函数,取A列字符串中的数字,第一个参数表示取第几个匹配结果,第二个参数表示连续数字的长度,联合起来表示符合指定长度的第几个数字。如果第二个参数省略,则表示匹配第几个数字,不管长度。

5、E列、F列同样用法。F列提取了第1个11位的连续数字,我们可以用来提取电话号码。

函数代码:

Function GetNum(str As String, Optional MatchType As Integer = 0, Optional MatchLen As Integer = 0)    '函数参数2个,默认为0,表示提取所有数字,    'MatchType,匹配类型,如果为0,表示提取所有数字,忽略第二参数,如果不为0,表示匹配第n个符合条件的元素    'MatchLen,匹配长度,指定提取的连续数字的长度,如果0,表示任意长度,不为0,则提取参数值长度的连续数字    '设第一参数=m,第二参数=n,如果m,n同时不为0,则表示提取第m个长度为n的连续数字。    Dim regEx As Object    Dim Result As String    k = 0    Set regEx = CreateObject("VBScript.RegExp")    With regEx        .Global = True        .Pattern = "\d+"  '匹配一个及以上连续数字,那就是所有数字    End With    Set Matches = regEx.Execute(str)   '进行匹配,匹配结果存到Matches    For i = 0 To Matches.Count - 1     '循环,根据参数取得匹配结果        If MatchType = 0 Then            Result = Result & Matches.Item(i).Value        Else            If MatchLen = 0 Then                If i = MatchType - 1 Then                    Result = Matches.Item(i).Value                    Exit For                End If            Else                                If Len(Matches.Item(i).Value) = MatchLen Then                    k = k + 1                End If                If MatchType = k Then                    Result = Matches.Item(i).Value                    Exit For                End If            End If        End If    Next    GetNum = ResultEnd Function

代码解释参见代码注释吧。

好,今天就分享到这,由于时间仓促,代码可能存在错误,欢迎批评指正!请大家点赞、留言、分享,谢谢大家,我们下期再会吧。

☆猜你喜欢☆

本文使用 文章同步助手 同步,本文于2023年5月6日首发于本人同名公众号:Excel活学活用,更多文章敬请关注

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接