Necesito filtrar mi excel usando una macro (múltiples datos)
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.AutoFilter
método mientras también especifica Operator:=xlFilterValues
.
Esto supone que:
- Tus datos están en el rango que incluye la celda A1. De lo contrario, cambie la última línea del procedimiento.
- Tus datos están en la Hoja1. De lo contrario, cambie la última línea del procedimiento.
- Desea utilizar un espacio para separar los elementos de la lista. Si no, cambia la línea que dice
sep = " "
por otra cosa.