Vba: как использовать автофильтр с несколькими критериями
Вы можете использовать следующие методы для использования автофильтра в VBA с несколькими критериями:
Способ 1. Используйте автофильтр с несколькими критериями в одном столбце
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=Array(" A ", " C "), Operator:=xlFilterValues
End With
End Sub
Этот конкретный макрос будет фильтровать все строки в диапазоне A1:C11 , где значение первого столбца равно «A» или «C».
Способ 2. Используйте автофильтр с несколькими критериями в нескольких столбцах
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=" A "
.AutoFilter Field:=2, Criteria1:=" Guard "
End With
End Sub
Этот конкретный макрос будет фильтровать диапазон A1:C11, чтобы отображать только строки, в которых первый столбец равен «A», а второй столбец — «Guard».
В следующих примерах показано, как использовать каждый из этих методов на практике со следующим набором данных в Excel:
Пример 1. Использование автофильтра с несколькими критериями в столбце
Допустим, мы хотим отфильтровать набор данных, чтобы отображались только строки, первый столбец которых равен «A» или «C».
Для этого мы можем создать следующий макрос:
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=Array(" A ", " C "), Operator:=xlFilterValues
End With
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что набор данных был отфильтрован так, чтобы отображались только строки с первым столбцом, равным «A» или «C».
Примечание . Мы включили в функцию Array() только два возможных значения, но вы можете включать столько, сколько захотите.
Пример 2. Использование автофильтра с несколькими критериями в нескольких столбцах
Допустим, мы хотим отфильтровать набор данных, чтобы отображались только строки, в которых значение столбца «Команда» равно A , а значение столбца «Позиция» равно «Охранник».
Для этого мы можем создать следующий макрос:
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=" A "
.AutoFilter Field:=2, Criteria1:=" Guard "
End With
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Я заметил, что набор данных был отфильтрован так, чтобы отображались только строки, в которых значение в столбце «Команда» равно A , а значение в столбце «Позиция» равно «Защитник».
Примечание . Полную документацию по методу VBA AutoFilter можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как фильтровать сводные таблицы
VBA: как очистить фильтры
VBA: как удалить повторяющиеся значения