Filtrar al cambiar una celda

Hace unos días me preguntaba un amigo si se podía hacer un filtro avanzado en Excel pero automático. Es decir, al cambiar el valor de una celda se filtre una tabla de manera inmediata y nos muestre sólo los resultados filtrados en nuestra hoja de Excel. La respuesta, como siempre, es que todo se puede hacer en Excel con más o menos dificultad y en este caso no es tan difícil.

Filtro avanzado

Lo primero que haremos será configurar nuestro filtro avanzado y grabar una macro mientras ejecutamos el filtro avanzado. En la siguiente imagen podéis ver el ejemplo de tabla que hemos usado:

filtro avanzado en excel

Nuestro objetivo será poder filtrar esta tabla de manera automática, al escribir en una celda el valor de un nombre. Lo siguiente que haremos será elegir el lugar donde queremos que aparezcan nuestros resultados filtrados. En al siguiente imagen podéis ver el lugar donde se colocarían los resultados:

2 Filtro avanzado

Por último, tendremos que poner en otro sitio donde estarán nuestros criterios para el filtro avanzado. Para ello hemos elegido otra tabla:

3 tablas para el filtro avanzado

Y como puedes ver, en la parte superior de la tabla original hemos elegido el sitio donde escribiremos el nombre por el cual queremos filtrar nuestra tabla. Este nombre está ligado al criterio nombre de la tabla de soporte como puede verse en la siguiente imagen:

5 ligar nombre de filtro avanado

Es decir, lo que se escriba en la celda A5 se pondrá en la celda H9 de la tabla de soporte… y aquí está el truco, como automatizar el filtro avanzado.

Automatizar el filtro avanzado

Para filtrar al cambiar una celda (en este caso la celda donde escribiremos el nombre) necesitamos echar mano de VBA. Para ello necesitaremos escribir una macro (o grabar una macro con el filtro avanzado) y escribir un pequeño evento (ver más de eventos en VBA).

El evento nos permitirá automatizar la macro del filtro avanzado.

El evento lo escribiremos en la hoja en la que tengamos la información y será:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("H9")) Is Nothing Then
        Call Filtrar_automáticamente
    End If
        
End Sub

Donde lo que queremos es que cuando cambie la celda H9, es decir al escribir un nuevo nombre, se ejecute la macro Filtrar_automáticamente. Dicha macro es:

Sub Filtrar_automáticamente()

    Range("A8:B16").AdvancedFilter _
        Action:=xlFilterCopy, _
        CriteriaRange:=Range("H8:I9"), _
        CopyToRange:=Range("E8:F8"), _
        Unique:=False

End Sub

Dicha macro ejecuta automáticamente el filtro avanzado que hemos preparado previamente. Como es lógico, es muy difícil aprenderse todos los códigos de VBA, yo en este caso he grabado una macro para poder luego modificarla a mi antojo.

Finalmente, con un poco de picardía, y ocultando las partes que no nos interesa que sean visibles tendremos la siguiente hoja de Excel:

6 ocultar las partes que no nos interesan

De esta manera sólo tendremos que escribir el nombre en la celda sombreada en gris y los resultados aparecerán debajo de forma automática.

Bonus track: filtrar todo lo que contenga…

Si queremos filtrar todo lo que contenga una letra o conjunto de letras escribiremos por delante de la palabra el símbolo *. En la imagen siguiente podéis ver los resultados conseguidos si escribimos *r… es decir, obtendremos todos los resultados que contengan una r.

7 filtrar lo que contenga

 

 

(Visited 48.035 times, 1 visits today)

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies