Código VBA para múltiples entradas de filtro en una sola columna usando un solo cuadro de entrada

Código VBA para múltiples entradas de filtro en una sola columna usando un solo cuadro de entrada

Necesito filtrar mi excel usando una macro (múltiples datos)

ingrese la descripción de la imagen aquí

Me gusta filtrar "la columna de calificaciones" (como en la imagen) con A, B y C (pero estos A, B y C no están restringidos, a veces solo necesito datos de calificaciones "B y C") y me gusta ingresarlos calificaciones para filtrar usando un cuadro de entrada.

¿Alguien puede ayudarme con el código?

Si la entrada se puede dar como "A+B+C" o como "AB C", será de gran ayuda.

Aquí están los datos de muestra, separados por espacios:

Name class Grade
Liam 1 A
Noah 2 b
William 3 c
James 1 d
Olive 2 e
Benjamin 3 f
Elijah 1 A
Lucas 2 b
Mason 3 c
Logan 1 d
Alexander 2 e
Ethan 3 f
Jacob 1 A
Michael 2 b
Daniel 3 c
Henry 1 d
Jackson 2 e
Sebastian 3 f
Aiden 1 A
Emma 2 b
Olivia 3 c
Ava 1 d
Isabella 2 e

Respuesta1

Según entiendo su pregunta, no desea utilizar el menú desplegable Autofiltro para filtrar los datos. En su lugar, desea escribir una lista de elementos en un InputBox y luego filtrar los datos de esos elementos.

Puedes hacerlo con este código:

Sub FilterListUsingInputBox()
    
    Dim sep As String
    Dim filter As String
    Dim filters() As String
    
    sep = " "
    
    filter = InputBox("Enter a list of 1-n filter items, separated by a space")
    
    If filter = "" Then 'no filter was entered
        Exit Sub
    End If
    
    filters = Split(filter, sep)
    
    Sheet1.Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:=filters, Operator:=xlFilterValues
End Sub

Lo que es importante tener en cuenta aquí es que primero debe dividir la entrada en una matriz y Split()luego pasarla al Range.AutoFiltermétodo mientras también especifica Operator:=xlFilterValues.

Esto supone que:

  1. Tus datos están en el rango que incluye la celda A1. De lo contrario, cambie la última línea del procedimiento.
  2. Tus datos están en la Hoja1. De lo contrario, cambie la última línea del procedimiento.
  3. Desea utilizar un espacio para separar los elementos de la lista. Si no, cambia la línea que dice sep = " "por otra cosa.

información relacionada