Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Данные, Копирование данных из середины листа в начало
 
Для удаления строк на основе условия для большого объема данных в 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.


Этот подход исключает необходимость проходить по каждой строке по одной, и удаление происходит только один раз после применения фильтра. Это значительно улучшает производительность при обработке большого объема данных.
Изменено: Deriel - 30.08.2023 06:19:20
Страницы: 1
Наверх