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 Поле:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub 

Тут ми оголосили імена заголовків в діапазоні B3:D3 в якому ми застосуємо фільтр і Поле:=2 номер стовпчика цього діапазону, на основі якого ми будемо здійснювати процес фільтрації.

Нарешті, ми задали критерії у вигляді масиву для оголошення декількох імен студентів, таких як Емілі. , Даніель і Габріель. .

Натисніть F5 .

Потім ви отримаєте набір даних, відфільтрований за кількома критеріями, щоб показати імена студентів та їх відповідні Ідентифікатори і Знаки для студентів Емілі. , Даніель і Габріель. .

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

Спосіб-2: Фільтр з декількома числовими критеріями в масиві за допомогою Excel VBA

Тут ми відфільтруємо наступний набір даних для ідентифікаторів 101135 , 101137 і 101138 використовуючи ці числа як множинні критерії в масиві.

Кроки :

Слідкуйте за Крок-01 з Спосіб-1 .

Напишіть наступний код

 Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Поле:=1, Оператор:=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 Поле:=1, Оператор:=xlFilterValues, _ Критерій1:=ID_range End Sub 

Тут ми задекларували ID_діапазон , k як Варіант і ID_діапазон масив, в якому буде зберігатись декілька критеріїв, а 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 і Функція TRANSPOSE в VBA код.

Кроки :

Слідкуйте за Крок-01 з Спосіб-1 .

Напишіть наступний код

 Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Поле:=1, Оператор:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub 

Ось, ТРАНСПОРТ перетворить 2D масив в 1D масив інакше Автофільтр не спрацює, ПРИЄДНУЙТЕСЬ об'єднає кожне із значень у масив рядків, і нарешті, СПЛІТ розбиває кожен рядок, щоб ввести їх окремо як критерії для фільтрації набору даних.

Натисніть 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 Поле:=1, Оператор:=xlFilterValues, _ Criteria1:=ID_range End Sub 

Тут ми задекларували k як Ціле число , ID_діапазон(100) як Рядок де ID_діапазон це масив, який буде зберігати до 100 Для визначення значень для цього масиву ми використали функцію Цикл FOR для k від 4 до 6 як номери рядків у Список стовпчик і F назва стовпця.

Нарешті, ми використали цей масив як Критерії1 для Автофільтр .

Натисніть F5 .

Зрештою, ви отримаєте прізвища та оцінки студентів, які мають ідентифікатори 101134 , 101135 і 101136 .

Читати далі: Фільтрація декількох критеріїв в Excel за допомогою VBA (як І, так і АБО)

Спосіб 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 Поле:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub 

Тут ми задекларували Студентський_асортимент , k в якості Варіант і використовував Функція TRANSPOSE переобладнати 2D масив іменованого діапазону Студент в 1D масив, а потім зберігав його в Студентський_асортимент Потім він використовується як Критерії1 для Автофільтр метод.

Натисніть F5 .

Потім ви отримаєте набір даних, відфільтрований за кількома критеріями, щоб показати імена студентів та їх відповідні Ідентифікатори і Знаки для студентів Джефферсон , Емілі. і Сара. .

Пов'язаний контент: Транспонування масиву в Excel за допомогою VBA (3 способи)

Спосіб 7: Фільтрування таблиці з декількома критеріями в масиві

Тут ми маємо наступне Таблиця на ім'я Таблиця 1 та за допомогою Excel VBA спробуємо відфільтрувати цю таблицю за назвами Емілі. , Даніель і Габріель. у вигляді декількох критеріїв у масиві.

Кроки :

Слідкуйте за Крок-01 з Спосіб-1 .

Напишіть наступний код

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

Ось, ListObjects("Table1") використовується для визначення таблиці Таблиця 1 , Поле:=2 для налаштування другого стовпчика цього діапазону як основи процесу фільтрації і, нарешті, ми визначили масив, що містить декілька назв для Критерії1 .

Натисніть F5 .

Зрештою, ви отримаєте набір даних, відфільтрований за кількома критеріями, щоб показати імена студентів та їх відповідні Ідентифікатори і Знаки для студентів Емілі. , Даніель і Габріель. .

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

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

Для самостійного проходження практики ми надали Практика розділ, як показано нижче, на аркуші з назвою Практика Будь ласка, зробіть це самі.

Висновок

У цій статті ми спробували розглянути способи фільтрації за кількома критеріями у вигляді масиву засобами Excel VBA Сподіваємось, він стане вам у нагоді. Якщо у вас є якісь пропозиції чи запитання, будь ласка, діліться ними у коментарях.

Г’ю Вест — досвідчений тренер і аналітик Excel із понад 10-річним досвідом роботи в галузі. Він має ступінь бакалавра з бухгалтерського обліку та фінансів і ступінь магістра з ділового адміністрування. Г’ю має пристрасть до викладання та розробив унікальний підхід до викладання, який легко зрозуміти та дотримуватися. Його експертне знання Excel допомогло тисячам студентів і професіоналів у всьому світі вдосконалити свої навички та досягти успіху в кар’єрі. У своєму блозі Г’ю ділиться своїми знаннями зі світом, пропонуючи безкоштовні навчальні посібники з Excel та онлайн-навчання, щоб допомогти окремим особам і компаніям повністю розкрити свій потенціал.