jkluio668
10/23/2017 - 1:06 PM

vba:reg2

正则相关

'[1]删除不收费的
Sub delete_free_rows()
    Application.ScreenUpdating = False
    Dim k%
    k = 0
    '定义正则表达式对象
    Dim oRegExp As Object
    '定义匹配字符串集合对象
    Dim oMatches As Object
    '创建正则表达式
    '定义要执行正则查找的文本变量
    Dim sText As String
    sText = "收费 .0\.00"
    For i = Range("a65536").End(xlUp).Row To 2 Step -1
        Set oRegExp = CreateObject("vbscript.regexp")
        With oRegExp
            '设置是否匹配所有的符合项,True表示匹配所有, False表示仅匹配第一个符合项
            .Global = True
            '设置是否区分大小写,True表示不区分大小写, False表示区分大小写
            .IgnoreCase = True
            '设置要查找的字符模式
            .Pattern = sText
            '判断是否可以找到匹配的字符,若可以则返回True
            If .Test(Application.WorksheetFunction.Clean(Cells(i, Rows("1:1").Find("备注", , , xlWhole).Column))) = True Then
                Rows(i).Delete
                k = k + 1
            End If
            '对字符串执行正则查找,返回所有的查找值的集合,若未找到,则为空
            '        Set oMatches = .Execute(Cells(i, 1))
            '把字符串中用正则找到的所有匹配字符替换为其它字符
            '        MsgBox .Replace(sText, "")
        End With
    Next
    Set oRegExp = Nothing
    Set oMatches = Nothing
    MsgBox "共删除 " & k & " 行,剩余 " & Range("a65536").End(xlUp).Row - 1 & " 行。"
    Application.ScreenUpdating = False
End Sub