Matrizes de filtro VBA

o Função de filtro VBA permite que você filtre arrays rapidamente. Existem várias configurações a serem consideradas ao filtrar matrizes. Vamos discuti-los abaixo.

Filtro - Combinar

Por padrão, a função de filtro VBA filtrará uma matriz para correspondências. No exemplo abaixo, filtraremos a matriz para correspondências com “Smith”.

1234567891011121314 Sub Filter_Match ()'Definir MatrizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames como variantestrSubNames = Filtro (strNames, "Smith")'Count Filtered ArrayMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nomes."End Sub

Alguns pontos importantes:

  • A variável da matriz filtrada deve ser declarada como variante do tipo de dados para evitar a definição do tamanho da matriz.
  • Por padrão, a função Filtro diferencia maiúsculas de minúsculas. Portanto, filtrar por “ferreiro” daria um resultado diferente de “Silva”. Abaixo, mostraremos como alterar essa configuração.

Filtro - não diferencia maiúsculas de minúsculas

Por padrão, o VBA diferencia maiúsculas de minúsculas. Isso significa que “ferreiro” não é igual a “Smith”. Isso é verdade para a Função de Filtro, bem como para todas (a maioria?) Outras funções ou comparações do VBA.

Pessoalmente, nunca quero que o VBA faça distinção entre maiúsculas e minúsculas, então sempre adiciono a opção Option Compare Text no topo de todos os meus módulos de código. Texto de comparação de opção diz ao VBA para ignorar maiúsculas e minúsculas para não diferenciar maiúsculas de minúsculas:

1 Texto de comparação de opções

Adicionar texto de comparação de opções à parte superior do módulo tornará a função de filtro insensível a maiúsculas e minúsculas. Como alternativa, você pode dizer à própria Função de Filtro para não diferenciar maiúsculas de minúsculas com o argumento vbTextCompare:

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

Exemplo completo:

1234567891011121314 Sub Filter_MatchCase ()'Definir MatrizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames como variantestrSubNames = Filter (strNames, "smith",, vbTextCompare)'Count Filtered ArrayMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nomes."End Sub

Filtro - Não Corresponde

A função de filtro também pode ser usada para identificar itens da matriz que NÃO corresponder aos critérios inseridos definindo o argumento Incluir como FALSO:

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

Exemplo completo:

1234567891011121314 Sub Filter_NoMatch ()'Definir MatrizDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Filter ArrayDim strSubNames como variantestrSubNames = Filtro (strNames, "Smith", False)'Count Filtered ArrayMsgBox "Found" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nomes."End Sub

Função de Filtro

A função Filtro VBA retorna um subconjunto Array de uma matriz de string fornecida.

A sintaxe da função de filtro é:

Filtro (SourceArray, Match, [Incluir], [Comparar])

Os argumentos da função são:

  • SourceArray - A matriz original para filtrar
  • Corresponder - A string a ser pesquisada
  • [Incluir] - OPCIONAL TRUE (Retorna correspondências), FALSE (Retorna elementos que não correspondem)
  • [Comparar] - OPCIONAL vbBinaryCompare - comparação binária, vbTextCompare - comparação de texto, vbDatabaseCompare - comparação de banco de dados
wave wave wave wave wave