Crea gráficas interactivas en Excel: Crossfiltering
Crea gráficos interactivos en Excel utilizando el poder de las funciones dinámicas para modificar los datos de origen y generar efectos avanzados que antes solo eran posibles con un conocimiento profundo del modelo de datos, suando cómo usar funciones como AGRUPARPOR y FILTRAR para preparar arrays dinámicos que ofrecen una flexibilidad increíble para construir gráficos adaptables y personalizados
El mejor cumplido que puedes recibir al presentar una visualización es la pregunta "¿Pero esto es Excel?". Con las matrices dinámicas podemos conseguir efectos visuales y un nivel de interactividad que hasta hace poco solo eran posibles mediante macros o desarrollos muy complejos. En este tutorial construimos un cuadro de mando interactivo con la técnica del crossfiltering: un ranking de clientes ajustable, una barra resaltada según la selección y un gráfico de detalle que cambia con cada cliente elegido.
Crear un ranking dinámico con AGRUPARPOR
Partimos de una tabla con tres columnas: cliente, fecha e importe. Para saber qué clientes han comprado más usamos la función AGRUPARPOR, que agrega y ordena los datos en un solo paso. Sus argumentos clave son:
- Filas: la columna por la que agrupar (
cliente). - Valores: la columna que se agrega (
importe). - Función: cómo se agrega, en este caso
SUMA. - Cabeceras: como trabajamos con una tabla, los datos llegan sin encabezados, así que indicamos que no.
- Totales: ponemos
0para que no añada fila de totales. - Orden: para un ranking de mayor a menor usamos
-2, donde el2apunta a la segunda columna (la agregación) y el signo negativo invierte el orden a descendente.
El resultado es una matriz ya ordenada con el cliente que más ha comprado en primer lugar.
Limitar resultados con TOMAR y un control de formulario
Para añadir interactividad, envolvemos el ranking con la función TOMAR, que devuelve el número de filas que indiquemos de una matriz. Si conectamos ese número a una celda, cambiar el valor (5, 7, 3...) ajusta al instante cuántos clientes se muestran.
Un truco muy útil que emplea Carlos Barbosa es insertar un control de formulario con flechas arriba/abajo. En el formato del control definimos valor mínimo 1, valor máximo 10, un incremento y, lo más importante, lo vinculamos con la celda que contiene el valor. Así el usuario sube o baja el ranking con un clic.
Series con nombres definidos
Para conectar los datos con el gráfico de forma robusta, separamos el resultado en dos columnas con ELEGIRCOLS (clientes en la primera, ventas en la segunda), referenciando la matriz con el # (operador de rango desbordado).
Después creamos nombres definidos desde el administrador de nombres (pestaña Fórmulas). Usamos un guion bajo inicial como convención (_CLIENTES, _VENTAS), los definimos a nivel de hoja y añadimos # a la celda de referencia para que el nombre tome todo el rango desbordado. Al editar la serie del gráfico, pulsamos F3 para insertar esos nombres en lugar de rangos de celdas, lo que mejora la trazabilidad y evita problemas al recalcular.
Resaltar el cliente seleccionado
Para destacar una barra concreta generamos primero una SECUENCIA con las FILAS de la matriz, que numera cada posición del ranking. Con un control de formulario elegimos qué fila resaltar.
La clave es dividir las ventas en dos series complementarias mediante un condicional SI:
- En una columna: si la secuencia coincide con el valor seleccionado, devuelve la venta; si no,
0. - En la otra columna: lo contrario,
0en el seleccionado y la venta en el resto.
Convertimos cada columna en un nombre definido (importe_seleccion, importes_no_seleccionados) y las cargamos como dos series del gráfico. Al darles colores distintos (por ejemplo naranja para la selección), la barra elegida se distingue de forma inmediata. Cambiamos el tipo de gráfico a barras apiladas para que ambas series queden centradas, ya que una siempre vale cero.
Para alinear el orden visual con el ranking, en el formato del eje activamos categorías en orden inverso. Un detalle práctico: como el control mueve el valor al revés de lo intuitivo, calculamos el inverso con =11 - valor para que al subir se seleccione la barra superior.
Gráfico de detalle por cliente
El último paso muestra la evolución mensual del cliente resaltado. Volvemos a usar AGRUPARPOR, esta vez agrupando por fecha y sumando importes, pero aprovechando dos opciones extra:
- El argumento de filtro: filtramos por
cliente =el cliente seleccionado, que recuperamos conINDICEsobre la matriz de etiquetas usando el número del control. - Aplicar una función a la columna de agrupación: si pasamos
MES(fecha), Excel agrupa directamente por número de mes sin necesidad de crear una columna auxiliar.
Separamos el resultado con ELEGIRCOLS, creamos los nombres detalle_fechas y detalle_importe (a nivel de hoja, con #) e insertamos un gráfico de líneas que toma esas series con F3. Por último, enlazamos el título del gráfico a la celda con el nombre del cliente, de modo que cambia automáticamente al movernos por el ranking.
Conclusión
Con AGRUPARPOR, TOMAR, ELEGIRCOLS, SECUENCIA, INDICE y nombres definidos basados en rangos desbordados, construimos un panel donde todo se recalcula al instante: el usuario decide cuántos clientes ve, resalta uno concreto y obtiene su evolución mensual. Las matrices dinámicas abren puertas que antes estaban cerradas en Excel y demuestran que sí es una herramienta más que capaz para crear visualizaciones interactivas.
Más contenido de Excel en InflueXcel
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul