miércoles, enero 30, 2008

Orden automático de series en gráficos en Excel.

En una hoja tenemos una tabla cuyos valores están ligados a celdas de una tabla remota (que está en otra hoja o cuaderno Excel). Los valores de la tabla del gráfico se actualizan a medida que los datos de la tabla de origen van cambiando.
Nuestro problema es ordenar los valores de la tabla del gráfico en forma automática. Es decir, sin tener que recurrir cada vez a Datos--Ordenar.
En mi blog sobre Excel he mostrado esta técnica en varias oportunidades. Aquí mostraremos una aplicación relacionada a gráficos.

Supongamos esta tabla, que será nuestra tabla remota (el origen de los valores)



En otra hoja (o cuaderno) tenemos otra tabla, cuyos valores están ligados a la tabla de origen. Si creamos un gráfico, el orden de los puntos de la serie será el de la tabla de origen



Para la claridad del ejemplo he puesto las tablas en la misma hoja.

Si creamos un gráfico con los datos de de la Tabla Principal, obtenemos



Nosotros queremos este gráfico



donde los puntos de la serie están ordenados de menor a mayor.

La técnica para hacerlo es la siguiente:

1 – Agregamos una columna a la Tabla Principal con la fórmula

=JERARQUIA(F3;$F$3:$F$7;1)+CONTAR.SI($F$3:F3;F3)-1

La función JERARQUIA da un número de orden a cada miembro de la serie de acuerdo a su posición relativa (de acuerdo al valor). Para crear una serie ascendiente usamos el tercer argumento de la función con el valor 1. La función CONTAR.SI permite "desempatar" en caso que dos puntos tengan el mismo valor.



2 – Creamos una Tabla Auxiliar donde usamos las funciones INDICE y COINCIDIR para crear una fórmula que "ordene" los valores y los nombres de acuerdo al resultado de la función JERARQUIA



La fórmula es

=INDICE($E$3:$F$7;COINCIDIR(FILA()-13;$G$3:$G$7;0);2)

Usamos FILA()-13 para obtener el número de orden de acuerdo a la fila en la cual nos encontramos (FILA()-13 en nuestro ejemplo da 1). También se pueden usar números enteros (1,2, etc.)

El resultado es una serie ordenada



Los valores en la tabla de origen son producidos por la función ALEATORIO. Cada vez que pulsen el botón Recalcular Valores, estos cambiarán.

El archivo con el ejemplo se puede descargar aquí.

viernes, enero 25, 2008

Construir gráficos combinados en Excel

Uno de mis lectores me envía el siguiente gráfico



Admito que el gráfico es muy bueno desde el punto de vista estético. El efecto de los rectángulos rojos que parecen deslizarse dentro de las columnas azules es muy vistoso.
Pero, ¿es este gráfico efectivo? A primera vista no está claro que significan las columnas azules y las rojas y las relaciones entre ellas. Después de estudiar detenidamente el gráfico, vemos que la columnas "flotante" roja representa el valor de la serie D2, la columna azul el valor de D1. El tamaño de la columna roja muestra la relación entre los valores D1 y D2.
El hecho de tener que aplicar algún esfuerzo para entender el gráfico contradice el objetivo de estas herramientas. El gráfico debe ayudarnos a entender de un "golpe de vista" los datos de una tabla y sus relaciones.

De todas maneras no hay que desmerecer la calidad estética del gráfico, y aunque mi lector no me lo pide expresamente, veremos cómo se puede construir.

Para analizar el gráfico empezamos por ver qué tipo de gráfico es. Si abrimos el menú de Tipo de gráfico, vemos que se trata de un gráfico combinado que no figura entre los gráficos disponibles de Excel.



Esta es nuestra primera pista. Ahora abrimos el menú Datos de origen para ver cuantas series de datos tiene el gráfico



Vemos que hay cuatro series, y además dos ejes X. Para ver a que rango pertenece cada serie, seleccionamos la serie en la ventanilla Serie y nos fijamos en Valores. Así podemos ver que las series 4 y 3 usan el mismo rango.

Otra forma de investigar es con este método: después de seleccionar algún elemento del gráfico (con un clic), presionamos sucesivamente alguna de las flechas. Las flechas ascendente y descendente seleccionan con cada presión una serie de elementos del gráfico. Las flechas izquierda y derecha seleccionarán los elementos de las series.



Ahora nos fijamos en el menú Opciones del gráfico, en la pestaña Eje



Vemos que tenemos dos ejes X y dos Y.

Como se trata de un gráfico combinado, queremos investigar qué tipos de gráficos se han usado para cada serie. Seleccionamos una serie y abrimos el menú Tipo de Gráfico



Para la serie 4 vemos que se ha usado el tipo Columna Apilada. Si nos fijamos en la serie 1 veremos que el tipo es Columna Agrupada.

Con todos estos datos ya podemos empezar a sacar nuestras conclusiones sobre cómo han construido este gráfico. El único truco no evidente es el uso de la serie 4, Diff/2, cuyo objetivo veremos más adelante.

El primer paso es construir un gráfico de columnas agrupadas con los datos de la serie D1



Eliminamos la leyenda y el título. Damos fondos distintos al área del gráfico y al área de trazado.



Seleccionamos la serie haciendo clic a alguna de las columnas y en la opción Trama-Degradado-Estilo de sombreado-Vertical. En la pestaña Opciones llevamos el valor de Ancho de rango a 100. Nuestro gráfico se verá así



Ahora la serie Diff/2. Señalamos el rango E2:E6 y lo copiamos (Ctrl+C). Seleccionamos el grafico, abrimos el menú Edición y elegimos Pegado Especial con las opciones "Nueva Serie" y "Columna"



Seleccionamos la serie que acabamos de agregar y abrimos el menú Formato serie de datos. En la pestaña Eje, elegimos la opción "Eje_Secundario"; en la pestaña Opciones llevamos el valor de Ancho de rango a 250. El resultado es



Seleccionamos la serie que acabamos de agregar y cambiamos el tipo de gráfico a Columna Apilada. También cambiamos el color de la serie para que se mimetice con la serie 1 y eliminamos los bordes.

Ahora seleccionamos el rango C2:C6 y volvemos a hacer el mismo proceso para la serie D2



El próximo paso es agregar nuevamente la serie Diff/2, con el mismo método que hemos empleado para las dos series anteriores



Con esto casi hemos terminado. Sólo nos queda por eliminar el eje secundario. Antes de hacerlo no aseguramos que la escala de ambos ejes Y coincida plenamente.
Señalamos el eje Y secundario y abrimos el menú de formato de eje. En la pestaña Tramas ponemos "ninguna" en las opciones de los marcadores



Y este será el resultado final:



Como decía al principio, este gráfico no ayuda a entender los datos que representa. Pero si hacemos un pequeño cambio podemos obtener un gráfico más representativo.
Seleccionamos la serie D2 (serie 3, en rojo) y abrimos el menú de formato de datos. En la pestaña de Orden de Serie apretamos "subir" para que la serie 3 quede en primer lugar



El resultado final es un gráfico de tipo "Termómetro" que muestra la relación exacta entre las series D1 y D2



El archivo con todos los pasos de la construcción se puede descargar aquí.

Otros métodos de construir gráficos tipo termometro pueden verse en esta nota y en esta otra.

miércoles, enero 09, 2008

Otro gráfico tipo termómetro en Excel

En esta entrada mostraré una técnica más sencilla que la de mi nota anterior sobre gráficos tipo termómetro con Excel.
Esta técnica es válida sólo si queremos representar dos series de datos. Supongamos una tabla que muestra las ventas de los departamentos de una tienda. Una serie muestra las ventas plantificas y la otra serie los resultados



Nuestro objetivo es construir este gráfico



Creamos un gráfico de tipo Columna Agrupada con el asistente de gráficos de Excel



El paso siguiente es crear dos rectángulos de distinto ancho



Alineamos los rectángulos horizontalmente y verticalmente con el menú Dibujo-Alinear



Al rectángulo interior le damos un color de relleno. Cambiamos el formato del rectángulo exterior de manera que se vuelva "invisible" (sin líneas, 100% transparencia)



Ahora seleccionamos los dos rectángulos (Mayúsculas y clic con el mouse) y los copiamos (Ctrl+C).
Seleccionamos la segunda serie del gráfico, Resultado en nuestro ejemplo, y pegamos los rectángulos con Ctrl+V



El último paso consiste en sobreponer las columnas. Sin quitar la selección de la serie Resultado, abrimos el menú Formato serie de datos y activamos la pestaña Opciones. En la ventanilla de Superposición llevamos el valor a 100



Con lo que logramos nuestro objetivo.