jueves, 23 de diciembre de 2021

Grafico con controles de formulario

Hace bastante que no publico sobre gráficos.. asi que hoy me he animado, tras una formación donde necesitaban aplicar algo especial sobre un gráfico.
Se trata de incorporar unos filtros temporales, donde indicar el inicio y fin de un intervalo de meses, a un gráfico. Lo que conseguiremos añadiendo dos controles de formulario tipo barras de desplazamiento.
Grafico con controles de formulario


Necesitamos añadir dos Barras de desplazamiento en las celdas D1:E1 y D2:E2, la primera con el vínculo a la celda E1, y la segunda a E2, y ambas con el rango entre 1 y 12:
Grafico con controles de formulario
Estos controles de formulario los puedes encontrar en la ficha Programados > grupo controles > desplegable Insertar > Controles de formulario (NO Active X) > Barra de desplazamiento
Grafico con controles de formulario


El resto es algo de formulación...
Por estética añadimos en F1 la fórmula:
=INDICE($C$4:$N$4;1;$E$1)
para mostrar el mes de inicio del detalle a mostrar.
Y añadimos en F2 la fórmula:
=INDICE($C$4:$N$4;1;$E$2)
para mostrar el mes de finalización del detalle a mostrar.
En ambos casos recuperamos el mes a partir del encabezado de los datos completos del rango B4:N7.

En el siguiente paso crearemos los siguientes nombres definidos (que luego incorporaremos al gráfico):
chtDatosTraspuestos =TRANSPONER(DESREF(Hoja1!$B$4;1;Hoja1!$E$1;3;(Hoja1!$E$2-Hoja1!$E$1+1)))
chtEtiquetas =TEXTO(TRANSPONER(DESREF(Hoja1!$B$4;0;Hoja1!$E$1;1;Hoja1!$E$2-Hoja1!$E$1+1));"mmm-aa")
chtSeries =TRANSPONER(Hoja1!$B$5:$B$7)
Serie_A =INDICE(chtDatosTraspuestos;0;1)
Serie_B =INDICE(chtDatosTraspuestos;0;2)
Serie_C =INDICE(chtDatosTraspuestos;0;3)

Donde recuperamos rangos variables, asociadas a las celdas del rango con datos B4:N7, empleando la elección realizada con nuestras barras de desplazamiento.
Tendríamos un nombre definido para las etiquetas del eje, esto es los meses:
chtEtiquetas =TEXTO(TRANSPONER(DESREF(Hoja1!$B$4;0;Hoja1!$E$1;1;Hoja1!$E$2-Hoja1!$E$1+1));"mmm-aa")
Además lo devolvemos en forma de texto pero con formato 'mmm-aa'
Igualmente para los 'Conceptos' con el nombre definido:
chtSeries =TRANSPONER(Hoja1!$B$5:$B$7)
Y además obtenemos el conjunto de datos/valores de las series:
chtDatosTraspuestos =TRANSPONER(DESREF(Hoja1!$B$4;1;Hoja1!$E$1;3;(Hoja1!$E$2-Hoja1!$E$1+1)))
A partir de ese rango variable de importes generamos las tres series a mostrar, que obtenemos con la función INDICE:
Serie_A =INDICE(chtDatosTraspuestos;0;1)
Serie_B =INDICE(chtDatosTraspuestos;0;2)
Serie_C =INDICE(chtDatosTraspuestos;0;3)

Listos... creamos un gráfico 'normal' de columnas agrupadas sobre los datos originales que muestra la totalidad de los meses:
Grafico con controles de formulario
Nos servirá como punto de partida para nuestra personalización...
En mi ejemplo lo mantendré como comparativa y trabajaré sobre una copia de este...

Accedemos a la opción de Seleccionar datos del gráfico a personalizar
Grafico con controles de formulario

Accederemos a Editar las etiquetas del eje horizontal, donde cambiaremos los rango estáticos por nuestros rangos variables (creados con los nombres definidos):
Grafico con controles de formulario

Notemos que el rango se escribe incluyendo el nombre de la hoja (o el del libro) delante:
=CHRT_conControlesForm.xlsx!chtEtiquetas

Repetiremos los pasos editando las tres series:
Grafico con controles de formulario

El rango se escribe incluyendo el nombre de la hoja (o el del libro) delante:
=CHRT_conControlesForm.xlsx!Serie_A

No olvides repetir el paso para las otras series de datos!!

LISTO... ya puedes jugar con las barras de desplazamiento para mostrar más o menos meses en el gráfico!!

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.