Excel VBA: Как фильтровать по нескольким критериям в массиве (7 способов)

  • Поделись Этим
Hugh West

Если вы ищете способы фильтр с массивом из нескольких критериев в Excel VBA тогда вы попали по адресу. Фильтрация большого набора данных на основе множества критериев может быть упрощена с помощью функции VBA коды, а не использовать обычную функцию Excel.

Итак, приступим к нашей основной статье.

Скачать рабочую тетрадь

Фильтр с несколькими критериями.xlsm

7 способов фильтрации по нескольким критериям в массиве с помощью Excel VBA

В следующем наборе данных у нас есть несколько записей оценок, соответствующих именам студентов и их идентификаторам. Мы попытаемся отфильтровать этот набор данных на основе различных критериев в виде массива с помощью некоторых кодов.

Мы использовали Microsoft Excel 365 версию здесь, вы можете использовать любые другие версии в зависимости от вашего удобства.

Метод-1: Фильтр с несколькими критериями в виде текстов в массиве

Здесь мы попытаемся отфильтровать следующий набор данных на основе Имя студента столбец для нескольких критериев, содержащих строки Эмили , Дэниел и Габриэль в массиве.

Шаг-01 :

➤ Перейдите к Разработчик Вкладка>> Visual Basic Вариант.

Затем Редактор Visual Basic откроется.

➤ Перейдите к Вставка Вкладка>> Модуль Вариант.

После этого Модуль будет создан.

Шаг-02 :

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Здесь мы объявили имена заголовков в диапазоне B3:D3 в котором мы будем применять фильтр и Поле:=2 это номер столбца этого диапазона, на основе которого мы будем выполнять процесс фильтрации.

Наконец, мы задали критерии в виде массива для объявления имен нескольких студентов, например Эмили , Дэниел и Габриэль .

➤ Нажмите F5 .

Затем набор данных будет отфильтрован по нескольким критериям, чтобы показать имена студентов и соответствующие им фамилии. Ids и Маркс для студентов Эмили , Дэниел и Габриэль .

Читать далее: Фильтр по нескольким критериям в Excel (4 подходящих способа)

Метод-2: Фильтр с несколькими числовыми критериями в массиве с помощью Excel VBA

Здесь мы будем отфильтровывать следующий набор данных по идентификаторам 101135 , 101137 и 101138 используя эти числа в качестве множественных критериев в массиве.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub 

Здесь мы объявили имена заголовков в диапазоне B3:D3 в котором мы будем применять фильтр и Поле:=2 это номер столбца этого диапазона, на основе которого мы будем осуществлять процесс фильтрации.

Наконец, мы задали критерии в виде массива для объявления идентификаторов нескольких студентов, например 101135 , 101137 и 101138 и мы поместили их в инвертированные запятые, чтобы указать их как строки, потому что Автофильтр будет работать только для массива строк.

➤ Нажмите F5 .

После этого вы получите имена и оценки студентов, имеющих идентификаторы. 101135 , 101137 и 101138 .

Читать далее: VBA для получения уникальных значений из столбца в массив в Excel (3 критерия)

Метод-3: Установка нескольких критериев в диапазоне для использования в качестве массива

Здесь мы перечислили критерии в Список столбец, содержащий идентификаторы 101134 , 101135 и 101136 на основе которых мы будем осуществлять процесс фильтрации.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Здесь мы объявили ID_range , k в качестве Вариант и ID_range это массив, в котором будут храниться множественные критерии, а k это приращение от нижней границы до верхней границы данного массива. Для определения нижней и верхней границы мы использовали функцию Функция LBOUND и Функция UBOUND соответственно.

Сайт цикл FOR используется для преобразования значений, отличных от строк в массиве, в строки с помощью функции Функция CStr Наконец, мы использовали этот массив как Критерии1 .

➤ Нажмите F5 .

После этого вы получите имена и оценки студентов, имеющих идентификаторы 101134 , 101135 и 101136 .

Читать далее: Фильтр различных столбцов по нескольким критериям в Excel VBA

Похожие чтения

  • Как фильтровать уникальные значения в Excel (8 простых способов)
  • Выполнение пользовательского фильтра в Excel (5 способов)
  • Вычисление среднего значения массива с помощью VBA (макрос, UDF и UserForm)
  • Ярлык для фильтра Excel (3 быстрых способа использования с примерами)

Метод-4: Использование функций SPLIT и JOIN для создания массива с несколькими критериями

Здесь мы будем использовать следующий список в разделе Список столбец как массив, и для правильной фильтрации набора данных мы также будем использовать Функция SPLIT , функция JOIN и Функция ТРАНСПОЗИЦИЯ в VBA код.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

Вот, TRANSPOSE преобразует 2D массив в 1D массив в противном случае Автофильтр не будет работать, JOIN объединит каждое из значений в массив строк, и, наконец, SPLIT будет разбивать каждую строку, чтобы ввести их отдельно в качестве критериев для фильтрации набора данных.

➤ Нажмите F5 .

Наконец, вы получите имена и оценки студентов, имеющих идентификаторы. 101134 , 101135 и 101136 .

Читать далее: Как разделить строку на массив в VBA (3 способа)

Метод-5: Фильтр с несколькими критериями в цикле для массива с помощью VBA

В этом разделе мы будем фильтровать следующий набор данных в зависимости от Студенческий билет столбец для нескольких критериев, перечисленных в Список колонна.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Здесь мы объявили k в качестве Целое число , ID_range(100) в качестве Строка где ID_range это массив, который будет хранить до 100 значения. Для определения значений этого массива здесь мы использовали функцию цикл FOR для k с сайта 4 на 6 как номера строк Список колонка и F это имя столбца.

Наконец, мы использовали этот массив как Критерии1 для Автофильтр .

➤ Нажмите F5 .

В конечном итоге вы получите имена и оценки студентов, имеющих идентификаторы 101134 , 101135 и 101136 .

Читать далее: Фильтр нескольких критериев в Excel с помощью VBA (типы AND и OR)

Метод-6: Использование именованного диапазона для нескольких критериев

Здесь мы перечислили некоторые имена студентов в Список столбец и назвал этот диапазон как Студент Используя этот именованный диапазон, мы определим массив, который будет содержать несколько критериев для Автофильтр особенность.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Здесь мы объявили Студенческий_ранг , k как Вариант , и использовал Функция ТРАНСПОЗИЦИЯ для преобразования 2D массив именованного диапазона Студент в 1D массив и затем сохранил его в Студенческий_ранг Затем он используется как Критерии1 для Автофильтр метод.

➤ Нажмите F5 .

Затем набор данных будет отфильтрован по нескольким критериям, чтобы показать имена студентов и соответствующие им фамилии. Ids и Маркс для студентов Джефферсон , Эмили и Сара .

Похожие материалы: VBA для транспонирования массива в Excel (3 метода)

Метод-7: Фильтр таблицы с несколькими критериями в массиве

Здесь мы имеем следующее Таблица чье имя Таблица1 и использование Excel VBA мы попытаемся отфильтровать эту таблицу на основе имен Эмили , Дэниел и Габриэль как несколько критериев в массиве.

Шаги :

➤ Следуйте Шаг-01 из Метод-1 .

➤ Напишите следующий код

 Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Вот, ListObjects("Table1") используется для определения таблицы Таблица1 , Поле:=2 для установки второго столбца этого диапазона в качестве основы процесса фильтрации, и, наконец, мы определили массив, содержащий несколько имен для Критерии1 .

➤ Нажмите F5 .

В конце концов, вы получите набор данных, отфильтрованный по нескольким критериям, чтобы показать имя студента и его соответствующий Ids и Маркс для студентов Эмили , Дэниел и Габриэль .

Читать далее: Excel VBA: Фильтр таблицы на основе значения ячеек (6 простых методов)

Практическая секция

Для самостоятельного выполнения практики мы предоставили Практика раздел, как показано ниже, в листе с именем Практика Пожалуйста, сделайте это сами.

Заключение

В этой статье мы попытались рассказать о способах фильтрации по нескольким критериям в виде массива с помощью Excel. VBA легко. надеюсь, вы найдете его полезным. если у вас есть какие-либо предложения или вопросы, не стесняйтесь поделиться ими в разделе комментариев.

Хью Уэст — опытный тренер и аналитик Excel с более чем 10-летним опытом работы в отрасли. Он имеет степень бакалавра в области бухгалтерского учета и финансов и степень магистра делового администрирования. Хью страстно любит преподавать и разработал уникальный подход к обучению, которому легко следовать и который легко понять. Его экспертные знания Excel помогли тысячам студентов и специалистов по всему миру улучшить свои навыки и преуспеть в своей карьере. В своем блоге Хью делится своими знаниями со всем миром, предлагая бесплатные учебные пособия по Excel и онлайн-обучение, чтобы помочь отдельным лицам и компаниям полностью раскрыть свой потенциал.