Масиви фільтрів VBA

The Функція фільтра VBA дозволяє швидко фільтрувати масиви. При фільтрації масивів слід враховувати кілька параметрів. Ми обговоримо їх нижче.

Фільтр - збіг

За замовчуванням функція фільтрації VBA фільтруватиме масив для збігів. У наведеному нижче прикладі ми будемо фільтрувати масив для збігів із “Смітом”.

1234567891011121314 Додатковий фільтр_відповідності ()'Визначте масивЗатемнити strNames як варіантstrNames = Array ("Стів Сміт", "Шеннон Сміт", "Райан Джонсон")'Масив фільтрівЗатемнити strSubNames як варіантstrSubNames = Фільтр (strNames, "Сміт")"Порахувати відфільтрований масивMsgBox "Знайдено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "імена".End Sub

Кілька важливих моментів:

  • Змінна відфільтрованого масиву повинна бути оголошена як варіант типу даних, щоб уникнути визначення розміру масиву.
  • За замовчуванням функція фільтра чутлива до регістру. Тож фільтрація за "ковалем" дасть інший результат, ніж "Сміт". Нижче ми покажемо вам, як змінити це налаштування.

Фільтр - Нечутливий до регістру

За замовчуванням VBA чутливий до регістру. Це означає, що "коваль" не дорівнює "Сміту". Це стосується функції фільтра, а також усіх (більшості?) Інших функцій VBA або порівнянь.

Особисто я ніколи не хочу, щоб VBA чутливий до регістру, тому я завжди додаю Option Compare Text у верхню частину всіх своїх модулів коду. Параметр "Порівняти текст" повідомляє VBA ігнорувати регістр, щоб він не враховував регістр:

1 Опція Порівняти текст

Додавання опції порівняння тексту у верхній частині вашого модуля зробить функцію фільтра нечутливою. Крім того, ви можете сказати, що сама функція фільтра нечутлива до регістру за допомогою аргументу vbTextCompare:

1 strSubNames = Фільтр (strNames, "smith",, vbTextCompare)

Повний приклад:

1234567891011121314 Sub Filter_MatchCase ()'Визначте масивЗатемнити strNames як варіантstrNames = Array ("Стів Сміт", "Шеннон Сміт", "Райан Джонсон")'Масив фільтрівЗатемнити strSubNames як варіантstrSubNames = Фільтр (strNames, "smith",, vbTextCompare)"Порахувати відфільтрований масивMsgBox "Знайдено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "імена".End Sub

Фільтр - не відповідає

Функцію фільтра також можна використовувати для ідентифікації елементів масиву, які НЕ відповідають введеним критеріям, встановивши для аргументу Включити значення FALSE:

1 strSubNames = Фільтр (strNames, "Smith", False)

Повний приклад:

1234567891011121314 Sub Filter_NoMatch ()'Визначте масивЗатемнити strNames як варіантstrNames = Array ("Стів Сміт", "Шеннон Сміт", "Райан Джонсон")'Масив фільтрівЗатемнити strSubNames як варіантstrSubNames = Фільтр (strNames, "Smith", False)"Порахувати відфільтрований масивMsgBox "Знайдено" & UBound (strSubNames) - LBound (strSubNames) + 1 & "імена".End Sub

Функція фільтра

Функція VBA Filter повертає підмножину Array поставленого рядкового масиву.

Синтаксис функції фільтра:

Фільтр (SourceArray, Match, [Включити], [Порівняти])

Аргументами функції є:

  • ДжерелоМасив - Оригінальний масив для фільтрації
  • Матч - Рядок для пошуку
  • [Включати] - НЕОБОВ'ЯЗКОВО TRUE (повертає збіги), FALSE (повертає елементи, які не збігаються)
  • [Порівняти] - НЕОБОВ'ЯЗКОВО vbBinaryCompare - двійкове порівняння, vbTextCompare - порівняння тексту, vbDatabaseCompare - порівняння бази даних

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave