Pole filtrů VBA

The Funkce filtru VBA umožňuje rychle filtrovat pole. Při filtrování polí je třeba vzít v úvahu několik nastavení. Budeme o nich diskutovat níže.

Filtr - shoda

Ve výchozím nastavení bude funkce filtru VBA filtrovat pole pro shody. V níže uvedeném příkladu budeme filtrovat pole pro shody s „Smith“.

1234567891011121314 Sub Filter_Match ()"Definujte pole."Dim strNames As VariantstrNames = Array („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtrůDim strSubNames jako variantastrSubNames = Filtr (strNames, "Smith")„Hrabě Filtrované poleMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub

Několik důležitých bodů:

  • Filtrovaná proměnná pole by měla být deklarována jako varianta datového typu, aby nedošlo k definování velikosti pole.
  • Ve výchozím nastavení funkce Filtr rozlišuje velká a malá písmena. Filtrování na „kováři“ by tedy poskytlo jiný výsledek než „kovář“. Níže vám ukážeme, jak toto nastavení změnit.

Filtr - nerozlišuje velká a malá písmena

Standardně VBA rozlišuje velká a malá písmena. To znamená, že „kovář“ neznamená „kovář“. To platí pro funkci filtru, stejně jako pro všechny (většina?) Dalších funkcí nebo srovnání VBA.

Osobně nikdy nechci, aby VBA rozlišoval velká a malá písmena, takže vždy na začátek všech svých modulů kódu přidám text pro porovnání možností. Možnost Porovnat text říká VBA, aby ignorovala velká a malá písmena, takže nerozlišuje velká a malá písmena:

1 Možnost Porovnat text

Když do horní části modulu přidáte text pro porovnání možností, funkce Filtr nebude rozlišovat velká a malá písmena. Alternativně můžete sdělit funkci filtrování, aby nerozlišovala malá a velká písmena pomocí argumentu vbTextCompare:

1 strSubNames = Filtr (strNames, "smith",, vbTextCompare)

Úplný příklad:

1234567891011121314 Sub Filter_MatchCase ()"Definujte pole."Dim strNames As VariantstrNames = Array („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtrůDim strSubNames jako variantastrSubNames = Filtr (strNames, "smith",, vbTextCompare)„Hrabě Filtrované poleMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub

Filtr - neodpovídá

Funkci filtru lze také použít k identifikaci položek pole, které NE odpovídat zadaným kritériím nastavením argumentu Include na FALSE:

1 strSubNames = Filtr (strNames, "Smith", False)

Úplný příklad:

1234567891011121314 Dílčí filtr_NoMatch ()"Definujte pole."Dim strNames As VariantstrNames = Array („Steve Smith“, „Shannon Smith“, „Ryan Johnson“)„Pole filtrůDim strSubNames jako variantastrSubNames = Filtr (strNames, "Smith", False)„Hrabě Filtrované poleMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "names."End Sub

Funkce filtru

Funkce filtru VBA vrací podmnožinu pole dodaného pole řetězců.

Syntaxe funkce filtru je:

Filtr (SourceArray, Match, [Include], [Compare])

Argumenty funkce jsou:

  • SourceArray - Původní pole k filtrování
  • Zápas - Řetězec, který se má vyhledat
  • [Zahrnout] - VOLITELNÝ TRUE (vrací shody), FALSE (vrací prvky, které se neshodují)
  • [Porovnat] - VOLITELNÝ vbBinaryCompare - binární srovnání, vbTextCompare - porovnání textu, vbDatabaseCompare - porovnání databáze
wave wave wave wave wave