Tabla de contenido
Si busca formas de filtro con matriz de criterios múltiples en Excel VBA Filtrar un gran conjunto de datos basándose en múltiples criterios puede ser más fácil con la ayuda de VBA en lugar de utilizar la función convencional de Excel.
Así pues, empecemos nuestro artículo principal.
Descargar el cuaderno de ejercicios
Filtro con múltiples criterios.xlsm7 Maneras de Filtrar con Múltiples Criterios en Matriz Usando Excel VBA
En el siguiente conjunto de datos, tenemos algunos registros de notas correspondientes al nombre de los estudiantes y sus ids. Intentaremos filtrar este conjunto de datos en base a diferentes criterios como un array utilizando algunos códigos.
Hemos utilizado Microsoft Excel 365 aquí, puede utilizar cualquier otra versión según su conveniencia.
Método-1: Filtrar con múltiples criterios como textos en un array
Aquí, intentaremos filtrar el siguiente conjunto de datos basándonos en el Nombre del alumno para varios criterios que contengan las cadenas Emily , Daniel y Gabriel en una matriz.
Paso-01 :
➤ Ir a la Desarrollador Pestaña Visual Basic Opción.
Entonces, el Editor de Visual Basic se abrirá.
➤ Ir a la Inserte Pestaña Módulo Opción.
Después de eso, un Módulo se creará.
Paso-02 :
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_1() ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub
Aquí, declaramos los nombres de cabecera en el rango B3:D3 en el que aplicaremos el filtro y Campo:=2 es el número de columna de este rango en base al cual realizaremos este proceso de filtrado.
Por último, hemos configurado los criterios como una matriz para declarar los nombres de varios alumnos, por ejemplo Emily , Daniel y Gabriel .
➤ Prensa F5 .
A continuación, tendrá el conjunto de datos filtrado por múltiples criterios para mostrar el nombre de los alumnos y su correspondiente Ids y Marcas para los estudiantes Emily , Daniel y Gabriel .
Más información: Filtrar Múltiples Criterios en Excel (4 Formas Adecuadas)
Método-2: Filtro con múltiples criterios numéricos en matriz utilizando Excel VBA
Aquí, vamos a filtrar el siguiente conjunto de datos para los identificadores 101135 , 101137 y 101138 utilizando estos números como criterios múltiples en una matriz.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_2() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Array("101135", "101137", "101138") End Sub
Aquí, declaramos los nombres de cabecera en el rango B3:D3 en el que aplicaremos el filtro y Campo:=2 es el número de columna de este rango en base al cual realizaremos este proceso de filtrado.
Por último, hemos configurado los criterios como una matriz para declarar los identificadores de varios alumnos, por ejemplo 101135 , 101137 y 101138 y los hemos puesto entre comillas para especificarlos como cadenas porque Autofiltro sólo funcionará para una matriz de cadenas.
➤ Prensa F5 .
A continuación, obtendrá los nombres y las notas de los estudiantes que tengan identificadores 101135 , 101137 y 101138 .
Más información: VBA para obtener valores únicos de columna en matriz en Excel (3 Criterios)
Método-3: Establecer Múltiples Criterios en un Rango para Usar como Matriz
Aquí hemos enumerado los criterios en el Lista columna que contiene los identificadores 101134 , 101135 y 101136 en base a la cual haremos nuestro proceso de filtrado.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_3() Dim ID_range, k As Variant ID_range = Application.Transpose(ActiveSheet.Range("F4:F6")) For k = LBound(ID_range) To UBound(ID_range) ID_range(k) = CStr(ID_range(k)) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub
Aquí, hemos declarado ID_rango , k como Variante y ID_rango es la matriz que almacenará los criterios múltiples, y k es el incremento que va desde el límite inferior hasta el límite superior de esta matriz. Para tener el límite inferior y el límite superior utilizamos la función Función LBOUND y Función UBOUND respectivamente.
En Bucle FOR se utiliza para convertir los valores que no sean cadenas de la matriz en cadenas con la ayuda de la función Función CStr Por último, hemos utilizado esta matriz como Criterios1 .
➤ Prensa F5 .
A continuación, obtendrá los nombres y las notas de los estudiantes que tengan identificadores 101134 , 101135 y 101136 .
Más información: Filtrar diferentes columnas por criterios múltiples en Excel VBA
Lecturas similares
- Cómo filtrar valores únicos en Excel (8 maneras fáciles)
- Realizar un Filtro Personalizado en Excel (5 Maneras)
- Calcular la Media de una Matriz con VBA (Macro, UDF y UserForm)
- Atajo para Filtro Excel (3 Usos Rápidos con Ejemplos)
Método-4: Uso de las funciones SPLIT y JOIN para crear matrices con múltiples criterios
En este caso, utilizaremos la siguiente lista en el Lista como una matriz y para filtrar el conjunto de datos correctamente también utilizaremos la columna Función SPLIT , Función JOIN y Función TRANSPOSE en un VBA código.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_4() ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=Split(Join(Application.Transpose(Range("F4:F6")), ","), ",") End Sub
Toma, TRANSPOSE convertirá el 2D en una matriz 1D de lo contrario Autofiltro no funcionará, ÚNASE A unirá cada uno de los valores en un array de cadenas, y finalmente, SPLIT desglosará cada cadena para introducirlas por separado como criterios para filtrar el conjunto de datos.
➤ Prensa F5 .
Por último, obtendrá los nombres y las notas de los estudiantes que tengan identificadores 101134 , 101135 y 101136 .
Más información: Cómo dividir una cadena en una matriz en VBA (3 maneras)
Método-5: Filtro con Criterios Múltiples en un Bucle para Matriz con VBA
En esta sección, filtraremos el siguiente conjunto de datos en función del Identificación del estudiante para los criterios múltiples que figuran en la lista Lista columna.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_5() Dim k As Integer Dim ID_range(100) As String For k = 4 To 6 ID_range(k) = ActiveSheet.Range("F" & k) Next k ActiveSheet.Range("B3:D3").AutoFilter Field:=1, Operator:=xlFilterValues, _ Criteria1:=ID_range End Sub
Aquí, hemos declarado k como Entero , ID_rango(100) como Cadena donde ID_rango es una matriz que almacenará hasta 100 Para determinar los valores de esta matriz hemos utilizado la función Bucle FOR para k de 4 a 6 como los números de fila del Lista columna y F es el nombre de la columna.
Por último, hemos utilizado esta matriz como Criterios1 para Autofiltro .
➤ Prensa F5 .
Al final, obtendrá los nombres y las notas de los estudiantes que tengan identificadores 101134 , 101135 y 101136 .
Más información: Filtrar múltiples criterios en Excel con VBA (ambos tipos AND y OR)
Método 6: Utilizar un ámbito con nombre para múltiples criterios
A continuación, hemos enumerado algunos nombres de los alumnos del Lista y nombramos este rango como Estudiante Usando este rango definido definiremos un array que contendrá múltiples criterios para la búsqueda. Autofiltro característica.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_6() Dim Student_range, k As Variant Student_range = Application.Transpose(ActiveSheet.Range("Student")) ActiveSheet.Range("B3:D3").AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Student_range End Sub
Aquí, hemos declarado Rango_estudiante , k como Variante y utilizó el Función TRANSPOSE para convertir el 2D array del rango nombrado Estudiante en un 1D y luego lo almacenamos en Rango_estudiante A continuación, se utiliza como Criterios1 para la Autofiltro método.
➤ Prensa F5 .
A continuación, tendrá el conjunto de datos filtrado por múltiples criterios para mostrar el nombre de los alumnos y su correspondiente Ids y Marcas para los estudiantes Jefferson , Emily y Sara .
Contenido relacionado: VBA para transponer matriz en Excel (3 métodos)
Método-7: Filtrar Tabla con Múltiples Criterios en una Matriz
Aquí tenemos lo siguiente Cuadro cuyo nombre es Tabla 1 y utilizando Excel VBA intentaremos filtrar esta tabla en función de los nombres Emily , Daniel y Gabriel como criterios múltiples en un array.
Pasos :
➤ Seguir Paso-01 de Método 1 .
➤ Escribe el siguiente código
Sub filter_with_array_as_criteria_7() ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, _ Operator:=xlFilterValues, Criteria1:=Array("Emily", "Daniel", "Gabriel") End Sub
Toma, ListObjects("Tabla1") se utiliza para definir la tabla Tabla 1 , Campo:=2 para establecer la segunda columna de este rango como base del proceso de filtrado y finalmente hemos definido un array que contiene múltiples nombres para Criterios1 .
➤ Prensa F5 .
Finalmente, tendrá el conjunto de datos filtrado por múltiples criterios para mostrar el nombre de los estudiantes y su correspondiente Ids y Marcas para los estudiantes Emily , Daniel y Gabriel .
Más información: Excel VBA: Filtrar Tabla Basado en el Valor de la Celda (6 Métodos Fáciles)
Sección práctica
Para hacer prácticas por su cuenta hemos proporcionado un Práctica en una hoja denominada Práctica Por favor, hazlo tú mismo.
Conclusión
En este artículo, tratamos de cubrir las formas de filtrar con múltiples criterios como una matriz utilizando Excel VBA Si tienes alguna sugerencia o pregunta, no dudes en compartirla en la sección de comentarios.