Matrices de filtros VBA

los Función de filtro VBA le permite filtrar rápidamente matrices. Hay varias configuraciones a considerar al filtrar matrices. Los discutiremos a continuación.

Filtro - Partido

De forma predeterminada, la función de filtro VBA filtrará una matriz en busca de coincidencias. En el siguiente ejemplo, filtraremos la matriz en busca de coincidencias con "Smith".

1234567891011121314 Sub Filter_Match ()'Definir matrizDim strNames como variantestrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Matriz de filtrosDim strSubNames como variantestrSubNames = Filter (strNames, "Smith")'Count Filtered ArrayMsgBox "Encontrado" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nombres".End Sub

Un par de puntos importantes:

  • La variable de matriz filtrada debe declararse como variante de tipo de datos para evitar definir el tamaño de la matriz.
  • De forma predeterminada, la función de filtro distingue entre mayúsculas y minúsculas. Por lo tanto, filtrar por "smith" daría un resultado diferente al de "Smith". A continuación, le mostraremos cómo cambiar esta configuración.

Filtro: no distingue entre mayúsculas y minúsculas

De forma predeterminada, VBA distingue entre mayúsculas y minúsculas. Esto significa que "herrero" no es igual a "herrero". Esto es cierto para la función de filtro, así como para todas (¿la mayoría?) Otras funciones o comparaciones de VBA.

Personalmente, nunca quiero que VBA distinga entre mayúsculas y minúsculas, por lo que siempre agrego Option Compare Text en la parte superior de todos mis módulos de código. Option Compare Text le dice a VBA que ignore las mayúsculas y minúsculas para que no distinga entre mayúsculas y minúsculas:

1 Opción Comparar texto

Agregar texto de comparación de opciones en la parte superior de su módulo hará que la función de filtro no distinga entre mayúsculas y minúsculas. Alternativamente, puede decirle a la función de filtro que no distinga entre mayúsculas y minúsculas con el argumento vbTextCompare:

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

Ejemplo completo:

1234567891011121314 Sub Filter_MatchCase ()'Definir matrizDim strNames como variantestrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Matriz de filtrosDim strSubNames como variantestrSubNames = Filter (strNames, "smith", vbTextCompare)'Count Filtered ArrayMsgBox "Encontrado" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nombres".End Sub

Filtro: no coincide

La función de filtro también se puede utilizar para identificar elementos de matriz que NO coincidir con los criterios introducidos estableciendo el argumento Incluir en FALSO:

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

Ejemplo completo:

1234567891011121314 Sub Filter_NoMatch ()'Definir matrizDim strNames como variantestrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Matriz de filtrosDim strSubNames como variantestrSubNames = Filter (strNames, "Smith", False)'Count Filtered ArrayMsgBox "Encontrado" & UBound (strSubNames) - LBound (strSubNames) + 1 & "nombres".End Sub

Función de filtro

La función de filtro VBA devuelve un subconjunto de matriz de una matriz de cadenas suministrada.

La sintaxis de la función de filtro es:

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

Los argumentos de la función son:

  • SourceArray - La matriz original para filtrar
  • Fósforo - La cadena para buscar
  • [Incluir] - OPCIONAL VERDADERO (Devuelve coincidencias), FALSO (Devuelve elementos que no coinciden)
  • [Comparar] - OPCIONAL vbBinaryCompare - comparación binaria, vbTextCompare - comparación de texto, vbDatabaseCompare - comparación de base de datos

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave