Добрый день дамы и господа. Удаление строк не содержащих определённый текст (или часть текста "ЯМ" и "РК") в столбце S. [vba]
Код
Sub УдалитьНеСодержит() Application.ScreenUpdating = False Application.Calculation = xlManual Dim iRow&, iArr As Variant iArr = Array("ЯМ", "РК") 'если текст ЯМ или РК, то удалить его With Application For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1 'удалить при условии, что ЯМ и РК в 19 он же S столбце и удаляем с 22 строки If .Sum(.CountIf(Cells(iRow, 19), iArr)) = 0 Then Rows(iRow).Delete Next End With Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
[/vba] Есть похожие темы (с удалением строк содержащих определенный тест. Разница в "= 0" и "<0"), и я перепробовал все варианты. Все они оставляют строки не содержащие ЯМ и РК, т.е. пустые строки после 36 строки (см. вложение Лист1) Но стоит мне добавить в S столбец 46-ой строки ЯМ или РК, как макрос удалит все строки после 36 строки, но только до 47 (её он оставит). См. вложение ЛИСТ2. Как можно задать удаляемый диапазон в 500 или 1000 строк? Где-то здесь надо что-то прописать [vba]
Код
For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1
[/vba] *** Понял, последний код - это поиск последней не пустой строки в столбце. Нужно через переменную For i = 500 to 22 step = -1 *** Я извиняюсь за беспокойство, нашел решение от _Boroda_ [vba]
Добрый день дамы и господа. Удаление строк не содержащих определённый текст (или часть текста "ЯМ" и "РК") в столбце S. [vba]
Код
Sub УдалитьНеСодержит() Application.ScreenUpdating = False Application.Calculation = xlManual Dim iRow&, iArr As Variant iArr = Array("ЯМ", "РК") 'если текст ЯМ или РК, то удалить его With Application For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1 'удалить при условии, что ЯМ и РК в 19 он же S столбце и удаляем с 22 строки If .Sum(.CountIf(Cells(iRow, 19), iArr)) = 0 Then Rows(iRow).Delete Next End With Application.Calculation = xlAutomatic Application.ScreenUpdating = True End Sub
[/vba] Есть похожие темы (с удалением строк содержащих определенный тест. Разница в "= 0" и "<0"), и я перепробовал все варианты. Все они оставляют строки не содержащие ЯМ и РК, т.е. пустые строки после 36 строки (см. вложение Лист1) Но стоит мне добавить в S столбец 46-ой строки ЯМ или РК, как макрос удалит все строки после 36 строки, но только до 47 (её он оставит). См. вложение ЛИСТ2. Как можно задать удаляемый диапазон в 500 или 1000 строк? Где-то здесь надо что-то прописать [vba]
Код
For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1
[/vba] *** Понял, последний код - это поиск последней не пустой строки в столбце. Нужно через переменную For i = 500 to 22 step = -1 *** Я извиняюсь за беспокойство, нашел решение от _Boroda_ [vba]
For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1
[/vba] выражение [vba]
Код
Cells(Rows.Count, 19).End(xlUp).Row
[/vba] ищет последнюю не скрытую заполненную строку в столбце 19 (а это "S"). Если вы хотите определять последнюю строку по другому столбцу, просто измените цифру 19 на соответствующую (порядковому номеру столбца). Хотите по столбцу "Т" - будет цифра 20.
Yar4i, Добрый день! У Вас в строке [vba]
Код
For iRow = Cells(Rows.Count, 19).End(xlUp).Row To 22 Step -1
[/vba] выражение [vba]
Код
Cells(Rows.Count, 19).End(xlUp).Row
[/vba] ищет последнюю не скрытую заполненную строку в столбце 19 (а это "S"). Если вы хотите определять последнюю строку по другому столбцу, просто измените цифру 19 на соответствующую (порядковому номеру столбца). Хотите по столбцу "Т" - будет цифра 20.Roman777