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