Matrice de filtre VBA

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

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave