ten Funkcja filtra VBA pozwala szybko filtrować tablice. Podczas filtrowania tablic należy wziąć pod uwagę kilka ustawień. Omówimy je poniżej.
Filtruj - Dopasuj
Domyślnie funkcja filtrowania VBA filtruje tablicę pod kątem dopasowań. W poniższym przykładzie przefiltrujemy tablicę pod kątem dopasowań z „Smith”.
1234567891011121314 | Pod filtr_Match()'Zdefiniuj szykDim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")„Filtruj tablicę”Dim strSubNames As VariantstrSubNames = Filter(strNames, "Kowalski")'Liczba filtrowanej tablicyMsgBox "Found " & UBound(strSubNames) - LBound(strSubNames) + 1 & " names."Napis końcowy |
Kilka ważnych punktów:
- Filtrowaną zmienną tablicową należy zadeklarować jako wariant typu danych, aby uniknąć definiowania rozmiaru tablicy.
- Domyślnie funkcja Filtr rozróżnia wielkość liter. Zatem filtrowanie według „kowala” dałoby inny wynik niż „Kowalski”. Poniżej pokażemy, jak zmienić to ustawienie.
Filtr - bez uwzględniania wielkości liter
Domyślnie VBA rozróżnia wielkość liter. Oznacza to, że „smith” nie równa się „Smith”. Dotyczy to funkcji filtrowania, a także wszystkich (większości?) innych funkcji VBA lub porównań.
Osobiście nigdy nie chcę, aby VBA rozróżniał wielkość liter, więc zawsze dodaję Option Compare Text na górze wszystkich moich modułów kodu. Opcja Porównaj tekst mówi VBA, aby ignorował wielkość liter, aby nie uwzględniał wielkości liter:
1 | Opcja Porównaj tekst |
Dodanie Option Compare Text na górze modułu sprawi, że funkcja filtrowania będzie niewrażliwa na wielkość liter. Alternatywnie możesz powiedzieć samej funkcji filtru, aby nie uwzględniała wielkości liter za pomocą argumentu vbTextCompare:
1 | strSubNames = Filter(strNames, "kowalski", , vbTextCompare) |
Pełny przykład:
1234567891011121314 | Filtr pomocniczy_Przypadek dopasowania()'Zdefiniuj szykDim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")„Filtruj tablicę”Dim strSubNames As VariantstrSubNames = Filter(strNames, "kowalski", , vbTextCompare)'Liczba filtrowanej tablicyMsgBox "Found " & UBound(strSubNames) - LBound(strSubNames) + 1 & " names."Napis końcowy |
Filtr - Nie pasuje
Funkcja filtrowania może być również używana do identyfikowania elementów tablicy, które: NIE RÓB dopasuj wprowadzone kryteria, ustawiając argument Uwzględnij na FAŁSZ:
1 | strSubNames = Filter(strNames, "Kowalski", False) |
Pełny przykład:
1234567891011121314 | Filtr pomocniczy_NoMatch()'Zdefiniuj szykDim strNames As VariantstrNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")„Filtruj tablicę”Dim strSubNames As VariantstrSubNames = Filter(strNames, "Kowalski", False)'Liczba filtrowanej tablicyMsgBox "Found " & UBound(strSubNames) - LBound(strSubNames) + 1 & " names."Napis końcowy |
Funkcja filtra
Funkcja VBA Filter zwraca podzbiór Array dostarczonej tablicy ciągów.
Składnia funkcji filtrowania to:
Filter( SourceArray, Match, [Uwzględnij], [Porównaj] )
Argumentami funkcji są:
- SourceArray -Oryginalna tablica do filtrowania
- Mecz - Ciąg do wyszukania
- [Włączać] - OPCJONALNY TRUE (zwraca dopasowania), FALSE (zwraca elementy, które nie pasują)
- [Porównywać] - OPCJONALNY vbBinaryCompare - porównanie binarne, vbTextCompare - porównanie tekstowe, vbDatabaseCompare - porównanie bazy danych