/ / Excel VBA изтрий ред, ако съдържа определени струни или има флаг за изтриване - excel, vba

Excel VBA изтрива ред, ако съдържа определени струни или има флаг за изтриване - excel, vba

Опитвам се да търся колона Б за три различни струни. Трябва ми да потърся град, държава и пощенски код, и ако някоя от колоните има съвпадащи градове, състояния или ципове, тогава се нуждая от премахването на този ред.

Също така имам настройка да премахна ред, ако има 0 в началото на поле в колона D, но не можах да го направя и за работа.

Ето кода, който имам досега:

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 за отговор № 1

Това е, защото правите LCase на стойностите в колона Б, но в сравнение с TitleCase ("Orlando") и UpperCase "FL" думи в изявлението за Вашия случай.

Променете кода си така. Изпробвах го на моя локален Excel и работи.

UPDATE Също така промених кода, за да се справя с случаите, които споменахте в коментарите тук.

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

ПРЕДИ КУПУВАНЕ Код:

преди

След текущия код:

след