我试图在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
但代码没有做任何事情。
答案 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