Удалить все строки на основе значений ячеек
Я хочу в Excel (2003) взять импортированный дамп данных и отформатировать его в отчет. Большая часть того, что я сделал, включала запись макроса, а затем настройку кода, где это необходимо. У меня есть место, которое требует чистого кода.
У меня есть столбец SORTED (D), в котором перечислены типы инцидентов (например: пожары, удары, укусы животных и т. Д.). Я хотел бы прочитать каждое значение в столбце D и, если оно НЕ является одним из нескольких значений, которые мы ищем, удалите всю строку.
Я пробовал несколько версий кода (которые я нашел в Интернете), и код, который дает результаты, наиболее близкие к тому, что мне нужно, выглядит следующим образом:
Range("D:D").Select
Dim workrange As Range
Dim cell As Range
Set workrange = Intersect(Selection, ActiveSheet.UsedRange)
For Each cell In workrange
If ActiveCell.Value <> "VFIRE" _
And ActiveCell.Value <> "ILBURN" _
And ActiveCell.Value <> "SMOKEA" _
And ActiveCell.Value <> "ST3" _
And ActiveCell.Value <> "TA1PED" _
And ActiveCell.Value <> "UN1" _
Then ActiveCell.EntireRow.Delete
Next cell
End Sub
Этот код удаляет большую часть списка (~ 100 строк исходного 168), но он только удаляет строки, пока не достигнет первого значения чего-то, что я хочу. Например, этот текущий дамп данных не имеет значений для «ILBURN» или «SMOKEA», но при первом появлении «ST3» макрос останавливается. Там нет сгенерированной ошибки, просто кажется, что это сделано.
Что я должен добавить, чтобы вызвать макрос через весь список?