Попытка удалить строки, содержащие определенную строку, сохраняя строки, где ячейка пуста - PullRequest
0 голосов
/ 08 октября 2019

Хорошо, так что это довольно запутанно, но мой код должен работать, но он все еще не работает (он только удаляет несколько строк, а затем останавливается ...)

Вот что я пытаюсь сделать:

У меня есть лист, в котором некоторые ячейки в column "B" содержат строки (все они содержат "DELETE" в той или иной форме), а некоторые ячейки пустые. Теперь я хочу удалить все строки, в которых рассматриваемая ячейка в column "B" содержит строку "DELETE", но при этом оставить те, в которых ячейка в столбце «B» пуста. Я могу только определить диапазон (lastrow) цикла на основе column "A", так как он заполнен до конца.

Еще одна вещь, которую я пытаюсь сделать в своем цикле, - это удалить все строки, где ячейка в column "E" не равна строке "Active", но по какой-то причине это все равно не работает.

Уточнение: строка «УДАЛИТЬ» может быть случайным образом в верхнем или нижнем регистре («УДАЛИТЬ», «Удалить», «Удалить» и т. Д.)

Вот мой код:

Sub format_pull()
Dim sh1 As Worksheet

Set sh1 = Sheets("Sheet1")

    LastRow = crc.Cells(Rows.Count, "A").End(xlUp).Row
    For x = 2 To LastRow

        If InStr(1, sh1.Range("B" & x).Value, UCase("DELETE"), 1) = 0 Then sh1.Range("B" & x).Value = "KEEP"
        If sh1.Range("B" & x).Value = "DELETE" Then sh1.Range("B" & x).EntireRow.Delete
        If sh1.Range("E" & x).Value <> "Active" Then sh1.Range("E" & x).EntireRow.Delete

    Next x

End Sub

Пожалуйста, помогите, это должен быть очень простой цикл, и я буквально не понимаю, почему он не работает ...

1 Ответ

2 голосов
/ 08 октября 2019

При удалении внутри цикла всегда лучше сделать это в обратном направлении, например:

For x = LastRow To 2 Step -1
    ...
Next x

Таким образом, при удалении чего-либо не возникнет проблем, но счетчик строк этого не делает. отрегулировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...