Простой фильтр

Задача одиночной фильтрации в VBA очень просто решается через автофильтр с копированием. Рассмотрим код:

Sub Filt()
With Worksheets("Sheet1")
            'Определяем необходимый диапазон
            .Range("A1:L65536").AutoFilter
            'Устанавливаем фильтр по 9 столбцу равно Торговый зал
            .Range("A1:L65536").AutoFilter Field:=9, Criteria1:="Торговый зал"
End With
'Вставляем новый лист после листа Sheet1
ActiveWorkbook.Worksheets.Add after:=Worksheets("Sheet1")
'Даем ему имя Торговый зал
Worksheets(2).Name = "Торговый зал"
'Копируем отфильтрованный диапазон в первую ячейку вставленного листа
Worksheets("Sheet1").Range("A1:L65536").Copy Worksheets("Торговый зал").Range("A1")
'Чуть расширим макрос - теперь мы хотим удалить лист Sheet1 (или первый лист)
'Но так как он содержит данные. чтобы не получить лишних подтвержающих сообщений
'Отключим их следующей строчкой
Application.DisplayAlerts = False
'Теперь можно удалить лист
Worksheets(1).Delete
End Sub

Фильтрация в VBA проводится проще чем в StarBasic. Критерий фильтрации в Параметре Criteria1 можно задавать как текстовый так и числовой. Например:

Criteria1:=">=0.001"
Criteria1:="<=5000"
Criteria1:="<>" - не пусто
Criteria1:="" - пусто

Можно использовать сразу несколько параметров по разным столбцам:
With Worksheets("Sheet1")
.Range("A1:L65536").AutoFilter
.Range("A1:L65536").AutoFilter Field:=9, Criteria1:="Торговый зал"
.Range("A1:L65536").AutoFilter Field:=10, Criteria1:="Производство"
End With
Можно задавать для одного столбца сразу два критерия через Оператор AND или OR:
With Worksheets("Sheet1")
            .Range("A1:L65536")).AutoFilter
            .Range("A1:L65536").AutoFilter Field:=3, Criteria1:=">0.001", _
             Operator:=xlAnd, Criteria2:="<1000"
    End With

Задача: откройте файл реестр документов по МХ с помощью MS Excel и создайте код одиночной фильтрации с переносом на новый лист по критерию Готовой продукции по 7 столбцу и Пекарня по 10 столбцу


Комментарии

Популярные сообщения из этого блога

Запуск макросов в автоматическом режиме по расписанию

Функции рабочего листа и скорость расчетов

Пакетная обработка отчетов