Для удаления строк на основе условия для большого объема данных в Excel с помощью VBA, рекомендуется использовать фильтрацию данных и удаление видимых строк. Это может значительно повысить производительность по сравнению с удалением строк одну за другой.
Ниже приведен пример макроса, который найдет все ячейки в столбце F, не содержащие "ВЭС", и удалит соответствующие строки, используя фильтрацию данных:
```vba Sub УдалитьСтрокиБезВЭС() Dim ws As Worksheet Dim lastRow As Long Dim rng As Range
' Укажите имя листа, на котором находятся данные Set ws = ThisWorkbook.Worksheets("Название_листа")
With ws ' Определяем последнюю заполненную строку в столбце F lastRow = .Cells(.Rows.Count, "F").End(xlUp).Row
' Устанавливаем диапазон, содержащий данные в столбце F Set rng = .Range("F1:F" & lastRow)
' Применяем фильтр по условию rng.AutoFilter Field:=1, Criteria1:="<>ВЭС"
' Проверяем, найдены ли строки, не содержащие "ВЭС" If Application.WorksheetFunction.Subtotal(103, rng) > 1 Then ' Удаляем видимые строки кроме заголовка .AutoFilter.Range.Offset(1).Resize(rng.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete End If
' Отключаем фильтр .AutoFilterMode = False End With End Sub ```
Укажите "Название_листа" для переменной `ws`, чтобы указать имя листа с данными. Затем запустите макрос `УдалитьСтрокиБезВЭС`, который применит фильтр по условию и удалит строки, которые не содержат "ВЭС" в столбце F.
Этот подход исключает необходимость проходить по каждой строке по одной, и удаление происходит только один раз после применения фильтра. Это значительно улучшает производительность при обработке большого объема данных.