The Funcția de filtrare VBA vă permite să filtrați rapid matrici. Există mai multe setări de luat în considerare la filtrarea matricelor. Le vom discuta mai jos.
Filtru - Potrivire
În mod implicit, funcția de filtrare VBA va filtra o matrice pentru potriviri. În exemplul de mai jos vom filtra matricea pentru potrivirile cu „Smith”.
1234567891011121314 | Sub Filter_Match ()„Definiți matriceaDim strNames As VariantstrNames = Array („Steve Smith”, „Shannon Smith”, „Ryan Johnson”)'Filtru matriceDim strSubNames As VariantstrSubNames = Filtru (strNames, "Smith")'Numără matricea filtratăMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".Sfârșitul Sub |
Câteva puncte importante:
- Variabila matricei filtrate trebuie declarată ca variantă de tip de date pentru a evita definirea dimensiunii matricei.
- În mod implicit, funcția Filtru este sensibil la majuscule și minuscule. Deci, filtrarea pe „smith” ar da un rezultat diferit de „Smith”. Mai jos vă vom arăta cum să modificați această setare.
Filtru - nedistins cu majuscule
În mod implicit, VBA este sensibil la majuscule. Aceasta înseamnă că „smith” nu este egal cu „Smith”. Acest lucru este valabil pentru funcția de filtrare, precum și pentru toate (majoritatea?) Altor funcții sau comparații VBA.
Personal, nu vreau niciodată ca VBA să fie sensibil la majuscule și minuscule, așa că adaug întotdeauna opțiunea Comparare text în partea de sus a tuturor modulelor mele de cod. Opțiunea Compară textul îi spune VBA să ignore majuscule și minuscule, astfel încât să nu distingă majusculele și minusculele:
1 | Opțiune Comparați textul |
Adăugarea Opțiunii de comparare a textului în partea de sus a modulului dvs. va face ca Funcția de filtrare să nu fie sensibilă la majuscule. Alternativ, puteți spune Funcției de filtrare în sine să nu distingă majusculele și minusculele cu argumentul vbTextCompare:
1 | strSubNames = Filtru (strNames, "smith",, vbTextCompare) |
Exemplu complet:
1234567891011121314 | Sub Filter_MatchCase ()„Definiți matriceaDim strNames As VariantstrNames = Array („Steve Smith”, „Shannon Smith”, „Ryan Johnson”)'Filtru matriceDim strSubNames As VariantstrSubNames = Filtru (strNames, "smith",, vbTextCompare)'Numără matricea filtratăMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".Sfârșitul Sub |
Filtru - Nu se potrivește
Funcția de filtrare poate fi, de asemenea, utilizată pentru a identifica elementele matrice care NU FACE potriviți criteriile introduse setând argumentul Includeți la FALS:
1 | strSubNames = Filtru (strNames, "Smith", Fals) |
Exemplu complet:
1234567891011121314 | Sub Filter_NoMatch ()„Definiți matriceaDim strNames As VariantstrNames = Array („Steve Smith”, „Shannon Smith”, „Ryan Johnson”)'Filtru matriceDim strSubNames As VariantstrSubNames = Filtru (strNames, "Smith", Fals)'Numără matricea filtratăMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names".Sfârșitul Sub |
Funcția de filtrare
Funcția Filtru VBA returnează un subset Array al unei matrice de șiruri furnizate.
Sintaxa funcției de filtrare este:
Filtru (SourceArray, Match, [Include], [Compare])
Argumentele funcției sunt:
- SourceArray - Array-ul original de filtrat
- Meci - Șirul de căutat
- [Include] - OPȚIONAL TRUE (Returnează meciuri), FALSE (Returnează elemente care nu se potrivesc)
- [Comparaţie] - OPȚIONAL vbBinaryCompare - comparație binară, vbTextCompare - comparație de text, vbDatabaseCompare - comparație de baze de date