前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在VBA中,如何应用正则表达式

在VBA中,如何应用正则表达式

作者头像
哆哆Excel
发布2024-01-19 16:57:08
5540
发布2024-01-19 16:57:08
举报
文章被收录于专栏:哆哆Excel
在VBA中,如何应用正则表达式

(一)正则表达式有什么方法与属性

在VBA中,正则表达式可以使用VBScript Regular Expressions库来实现。以下是VBScript Regular Expressions库中常用的一些方法和属性:

1.Pattern属性:用于设置或获取正则表达式的模式。2.Global属性:一个布尔值,如果为True,则整个字符串都会被搜索匹配。3.IgnoreCase属性:一个布尔值,如果为True,则搜索匹配时不区分大小写。4.MultiLine属性:一个布尔值,如果为True,则模式可以匹配多行文本。5.Replace方法:用于替换匹配到的字符串。6.Execute方法:用于在字符串中查找匹配的模式。7.Test方法:用于测试字符串是否匹配模式。

下面先用一外例子说明如何创建与使用

代码语言:javascript
复制
Sub ExampleRegex()  
    Dim regEx As Object  
    Dim strInput As String  
    Dim strPattern As String  
    Dim strReplace As String  
      
    ' 创建一个正则表达式对象  
    Set regEx = CreateObject("VBScript.RegExp")  
      
    ' 设置模式和属性  
    regEx.Pattern = "\d+" '匹配一个或多个数字  
    regEx.Global = True '全局匹配  
    regEx.IgnoreCase = True '不区分大小写  
      
    ' 输入字符串  
    strInput = "This is a sample string 123456"  
      
    ' 设置替换字符串  
    strReplace = "****"  
      
    ' 执行替换操作  
    strInput = regEx.Replace(strInput, strReplace)  
      
    ' 输出结果  
    MsgBox strInput  
End Sub

(二)应用示例01:【替换所有的数字】

替换A列中所有的数字,输出到B列

代码语言:javascript
复制
Sub 替换所有的数字()
    Dim regEx As Object
    Dim strInput As String
    Dim strPattern As String
    Dim strReplace As String
    ' 创建一个正则表达式对象
    Set regEx = CreateObject("VBScript.RegExp")
    ' 设置模式和属性
    regEx.Pattern = "\d+"                                      '匹配一个或多个数字
    regEx.Global = True                                        '全局匹配
    regEx.IgnoreCase = True                                    '不区分大小写
    With ActiveSheet
        Set rngs = .Range("A1:A10")
        For Each r In rngs
            r.Offset(0, 1).Value = regEx.Replace(r.Value, "")
        Next
    End With
End Sub

(三)应用示例02:【提取出A列中的姓名与电话】

如图,提取姓名,电话

下面我们将设计一个自定义函数,来完成

在Excel模板中设计一个函数

代码语言:javascript
复制
Function myExtract(myStr As String, flag As Integer)
    Application.Volatile
    With CreateObject("VBSCRIPT.REGEXP")
        Select Case flag
            Case 1
                .Pattern = "[^\u4e00-\u9fa5]"            '匹配汉字以外的字符
            Case 2
                .Pattern = "[^a-zA-Z]"                   '匹配英文以外的字符
            Case 3
                .Pattern = "[^0-9]"                      '匹配数字以外的字符
        End Select
        .Global = True
        If .test(myStr) Then
            myExtract = .Replace(myStr, "")
        Else
            myExtract = myStr
        End If
    End With
End Function

完成效果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 哆哆Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档