The Funkcia filtra VBA umožňuje rýchlo filtrovať polia. Pri filtrácii polí je potrebné zvážiť niekoľko nastavení. Budeme o nich diskutovať nižšie.
Filter - zápas
V predvolenom nastavení bude funkcia filtra VBA filtrovať pole na zhody. V nižšie uvedenom príklade budeme filtrovať pole na zhody s „Smith“.
1234567891011121314 | Sub Filter_Match ()„Definujte poleDim strNames As VariantstrNames = Pole („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtraDim strSubNames ako variantstrSubNames = Filter (strNames, "Smith")„Gróf filtrované poleMsgBox „Nájdené“ a UBound (strSubNames) - LBound (strSubNames) + 1 & „mená“.Koniec pod |
Niekoľko dôležitých bodov:
- Filtrovaná premenná poľa by mala byť deklarovaná ako variant dátového typu, aby sa zabránilo definovaniu veľkosti poľa.
- V predvolenom nastavení funkcia filtra rozlišuje veľké a malé písmena. Filtrovanie na „kováčovi“ by teda prinieslo iný výsledok ako na „Smithovom“. Nižšie vám ukážeme, ako zmeniť toto nastavenie.
Filter - nerozlišuje malé a veľké písmená
VBA štandardne rozlišuje veľké a malé písmena. To znamená, že „kováč“ sa nerovná „kováča“. Platí to o funkcii filtra, ako aj o všetkých (väčšine?) Ostatných funkciách alebo porovnaniach VBA.
Osobne nikdy nechcem, aby VBA rozlišoval veľké a malé písmena, takže vždy na začiatok všetkých svojich kódových modulov pridám text na porovnanie možností. Možnosť Porovnať text hovorí VBA, aby ignorovala veľké a malé písmená, takže nerozlišuje malé a veľké písmená:
1 | Možnosť Porovnať text |
Ak do hornej časti modulu pridáte text na porovnanie možností, funkcia filtra nebude rozlišovať veľké a malé písmena. Alternatívne môžete povedať, že samotná funkcia filtra nerozlišuje malé a veľké písmena pomocou argumentu vbTextCompare:
1 | strSubNames = Filter (strNames, "smith",, vbTextCompare) |
Úplný príklad:
1234567891011121314 | Podfilter_MatchCase ()„Definujte poleDim strNames As VariantstrNames = Pole („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtraDim strSubNames ako variantstrSubNames = Filter (strNames, "smith",, vbTextCompare)„Gróf filtrované poleMsgBox „Nájdené“ a UBound (strSubNames) - LBound (strSubNames) + 1 & „mená“.Koniec pod |
Filter - nezhoduje sa
Funkciu filtra je možné použiť aj na identifikáciu položiek poľa, ktoré NEROBTE zodpovedať zadaným kritériám nastavením argumentu Zahrnúť na NEPRAVDU:
1 | strSubNames = Filter (strNames, "Smith", False) |
Úplný príklad:
1234567891011121314 | Podfilter_NoMatch ()„Definujte poleDim strNames As VariantstrNames = Pole („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtraDim strSubNames ako variantstrSubNames = Filter (strNames, "Smith", False)„Gróf filtrované poleMsgBox „Nájdené“ a UBound (strSubNames) - LBound (strSubNames) + 1 & „mená“.Koniec pod |
Funkcia filtra
Funkcia filtra VBA vracia podmnožinu poľa dodaného poľa reťazcov.
Syntax funkcie filtra je:
Filter (SourceArray, Match, [Include], [Compare])
Argumenty funkcie sú:
- SourceArray - Pôvodné pole na filtrovanie
- Zápas - Reťazec, ktorý sa má vyhľadať
- [Zahrnúť] - VOLITEĽNÉ TRUE (vráti zhody), FALSE (vráti prvky, ktoré sa nezhodujú)
- [Porovnať] - VOLITEĽNÉ vbBinaryCompare - binárne porovnanie, vbTextCompare - porovnanie textu, vbDatabaseCompare - porovnanie databázy