根据REGEX模式匹配Excel VBA删除行

时间:2019-09-30 03:48:01

标签: excel vba autofilter

如果单元格值与正则表达式不匹配,我想在excel中使用宏删除行。 更具体地说,如果单元格值不是以数字开头,请删除整行

示例

在宏之前

宏之后

因此,我一直在尝试使用.AutoFilter将论坛中的一些代码整理在一起,但我认为它不以正则表达式对象作为条件,而只是字符串。。

Sub test()
    Dim table As Range
    Dim ws As Worksheet
    Dim upperLeft As Range
    Dim digitOnly As Object

    Set digitOnly = CreateObject("vbscript.regexp")
    digitOnly.Pattern = "^[\d]"
    digitOnly.Ignorecase = True

    Set ws = ActiveSheet
    Set upperLeft = ws.Range("A2")
    Set table = upperLeft.CurrentRegion

    With table
    .AutoFilter Field:=1, Criteria1:=digitOnly
    .Offset(1, 0).EntireRow.Delete
    End With
    End Sub

有人可以提出其他建议,或者告诉我我做错了什么吗?谢谢:)。

2 个答案:

答案 0 :(得分:0)

类似的东西:

Sub test()
    Dim table As Range, c As Range
    Dim ws As Worksheet

    Set ws = ActiveSheet
    Set table = ws.Range("A2").CurrentRegion

    For i = table.columns(1).cells.count to 2 Step -1
        With table.columns(1).cells(i)
            If Not .Value like "#*" then .EntireRow.Delete
        End with  
    Next i

End Sub

答案 1 :(得分:0)

按照@PaichengWu的建议,我使用他的LIKE表达式并阅读了其他一些相关的posts

Sub DeleteRow()
    Dim i As Integer
    For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Not Range("A" & i).Value Like "#*" Then
            Range("A" & i).EntireRow.Delete
        End If
    Next i
End Sub

快乐的小伙子:) 谢谢。

相关问题