Оглавление
Если вы ищете способы фильтр с массивом из нескольких критериев в Excel VBA тогда вы попали по адресу. Фильтрация большого набора данных на основе множества критериев может быть упрощена с помощью функции VBA коды, а не использовать обычную функцию Excel.
Итак, приступим к нашей основной статье.
Скачать рабочую тетрадь
Фильтр с несколькими критериями.xlsm7 способов фильтрации по нескольким критериям в массиве с помощью 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 легко. надеюсь, вы найдете его полезным. если у вас есть какие-либо предложения или вопросы, не стесняйтесь поделиться ими в разделе комментариев.