如果包含某些字符串或设置了删除标志,则Excel VBA删除行

时间:2014-10-31 20:47:09

标签: excel vba

我试图在B列中搜索3个不同的字符串。我需要它来搜索city,state和zip,如果任何列具有匹配的city,state或zip,那么我需要删除该行。

如果在D栏的字段开头有0,我也设置了删除一行,但我也无法使其工作。

这是我到目前为止的代码:

Sub Removal()
Dim i As Long

For i = Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
If Left(Range("D" & i), 1) = "0" Then
Rows(i).Delete
Else
Select Case LCase(Range("B" & i))
Case Is = "Orlando", "FL", "37941"
Rows(i).Delete
End Select
End If
Next i
End Sub

但代码没有做任何事情。

1 个答案:

答案 0 :(得分:1)

这是因为您对列B中的值进行了LCase,但与Case语句中的TitleCase("Orlando")和UpperCase "FL"字词进行了比较。

像这样修改你的代码。我在我的本地Excel上测试它并且它可以工作。

更新我还修改了代码以处理您在此处评论中提到的案例。

Sub Removal()
    Dim i As Long, searchString As String

        For i = Range("B" & Rows.Count).End(xlUp).Row To 1 Step -1
            ' if a row is marked for deletion, delete it and continue.
          If Left(Range("D" & i), 1) = "0" Then
            Rows(i).Delete
              ' skip to next row
            GoTo NextRow
          End If

        searchString = LCase(Range("B" & i))

        If (InStr(1, searchString, "orlando") > 0) Or _
            (InStr(1, searchString, "fl") > 0) Or _
            (InStr(1, searchString, "37941") > 0) Then
            Rows(i).Delete
        End If

NextRow:
        Next i

End Sub

在运行代码之前:

before

运行代码后:

after