VBA Función Filter – Arrays

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 22, 2022

La función Filter (Filtro) de VBA le permite filtrar rápidamente las matrices. Hay varias opciones a considerar cuando se filtran matrices. Los discutiremos a continuación.

Filter – Match (Filtro – Coincidencia)

Por defecto, la función de filtro de VBA filtrará una matriz en busca de coincidencias. En el ejemplo de abajo filtraremos el arreglo por coincidencias con «Smith».

Sub Filter_Match()

    'Definir la matriz
    Dim strNames As Variant
    strNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Filtrar la matriz
    Dim strSubNames As Variant
    strSubNames = Filter(strNames, "Smith")
    
    'Contar la matriz filtrada
    MsgBox "Encontrado(s) " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nombre(s)."

End Sub

Un par de puntos importantes:

  • La variable del array filtrado debe declararse como variante para evitar definir el tamaño del array.
  • Por defecto, la función Filter distingue entre mayúsculas y minúsculas. Por lo que filtrar sobre «smith» daría un resultado diferente al de «Smith». A continuación le mostraremos cómo cambiar esta configuración.

Filter – Case Insensitive (Filtro – Sensible a Mayúsculas y Minúsculas)

Por defecto, VBA distingue entre mayúsculas y minúsculas. Esto significa que para que el texto coincida, los casos deben ser iguales (por ejemplo, «smith» no es igual a «Smith»). Esto se aplica a la función de filtro, así como a todas (¿la mayoría?) las demás funciones o comparaciones de VBA.

Personalmente, nunca quiero que VBA distinga entre mayúsculas y minúsculas, por lo que siempre añado «Option Compare Text» al principio 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 sea Insensible a las Mayúsculas y Minúsculas:

Option Compare Text

Agregar «Option Compare Text» al principio de su módulo hará que la Función de Filtrado no distinga entre mayúsculas y minúsculas. Alternativamente, puede decirle a la Función de Filtrado misma que no distinga entre mayúsculas y minúsculas con el argumento vbTextCompare:

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

Ejemplo completo:

Sub Filtro_MatchCase()

    'Definir la matriz
    Dim strNames As Variant
    strNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Filtrar la matriz
    Dim strSubNames As Variant
    strSubNames = Filter(strNames, "smith", , vbTextCompare)
    
    'Contar la matriz filtrada
    MsgBox "Encontrado(s) " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nombre(s)."

End Sub

Filter – Does Not Match (Filtro – No Coincide)

La función de filtro también puede utilizarse para identificar los elementos de la matriz que NO coinciden con los criterios introducidos, estableciendo el argumento Incluir en FALSE:

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

Ejemplo completo:

Sub Filtro_NoMatch()

    'Definir la matriz
    Dim strNames As Variant
    strNames = Array("Steve Smith", "Shannon Smith", "Ryan Johnson")

    'Filtrar la matriz
    Dim strSubNames As Variant
    strSubNames = Filter(strNames, "Smith", False)
    
    'Contar la matriz filtrada
    MsgBox "Encontrado(s) " & UBound(strSubNames) - LBound(strSubNames) + 1 & " nombre(s)."

End Sub

Filter Function (Función de Filtro)

Función Filter VBA

 

La función VBA Filter devuelve un subconjunto de un array de cadenas suministrado.

La sintaxis de la función de filtro es:

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

Los argumentos de la función son:

  • SourceArray – La matriz original a filtrar
  • Match – La cadena a buscar
  • [Include ] – OPCIONAL TRUE (Devuelve las coincidencias), FALSE (Devuelve los elementos que no coinciden)
  • [Comparar ] – OPCIONAL vbBinaryCompare – comparación binaria, vbTextCompare – comparación de texto, vbDatabaseCompare – comparación de bases de datos
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples