16 de abril de 2008

Formato condicional en gráficas

Una usauria me pregunta si es posible dar formato condicional a una gráfica de barras, de forma que la columna con el valor mínimo tenga color rojo, y la que tenga el valor máximo sea verde.

Suponiendo la siguiente tabla de datos:


Si hacemos una gráfica de columnas estándar, obtenemos lo siguiente:

Desde luego, se puede cambiar manualmente el color a los puntos (barras) máximo y mínimo de la serie. La desventaja es que, si los datos son cambiantes, habrá que estar coloreando las barras cada que esto ocurra. Lo que buscamos es un formato condicional, automático, que en todo momento de el color adecuado a cada columna.

Excel no tiene una forma directa de hacer este ajuste. De cualquier forma, podemos simular este efecto, llevando a cabo unos cuantos ajustes en nuestros datos y en nuestra gráfica.
Iniciamos aquí el uso de las series auxiliares o dummy series, imprescindibles para elaborar varios tipos de gráficas avanzadas. Comenzamos por añadir a nuestra tabla de datos tres columnas, como sigue:


En la celda C2 tenemos la fórmula:

=SI(B2=MAX($B$2:$B$13),B2,NOD())

En D2:

=SI(B2=MIN($B$2:$B$13),B2,NOD() )

Y en E2:

=SI(ESNOD(C2)*ESNOD(D2), B2,NOD())

Con estas fórmulas, logramos que la columna C muestre únicamente el valor máximo de la serie, la D el mínimo y la E todos los demás. Las celdas restantes muestran resultados de "error". El objetivo de estas fórmulas es crear una matriz de números y valores #N/A. Recordemos de notas anteriores que al graficar, Excel ignora los valores de error y los interpola de forma automática.

El siguiente paso es ajustar el rango de origen de la gráfica. Damos clic derecho en cualquier parte de la gráfica y seleccionamos Datos de origen... y en Rango de datos escribimos el rango:

=Hoja1!$A$1:$A$13,Hoja1!$C$1:$E$13

Es decir, ignoramos la columna B. Aceptamos el cuadro obteniendo la siguiente gráfica:

Observamos que los valores máximo y mínimo tienen colores diferentes. El efecto se logra ya que en realidad estamos graficando tres series de datos (de las cuales las dos primeras constan de un solo punto), pero formuladas de tal manera que aparentan ser una sola.

Podemos ver también que las columnas o series (que antes eran puntos de una sola serie) no aparecen correctamente centrados en sus respectivas categorías. Para solucionar esto, damos clic derecho en la gráfica, clic en Tipo de gráfico... y cambiamos el subtipo de gráfico a Columna apilada (¿por qué?). Obtenemos:

Por último, dí unos cuanto ajustes cosméticos: cambié el color del área de trazado a blanco, el tipo de las líneas de división a línea punteada, y el color de cada serie. Además cambié, en la escala del eje vertical (y), el valor de la división principal a 2 y el de la secundaria a 1. Eliminé el borde del área del gráfico y la subleyenda Valores de la leyenda principal. El resultado final:

Si en este momento cambiamos los valores, y cambia la posición de los valores máximo y mínimo, veremos que los colores se ajustarán en consecuencia.

2 comentarios:

  1. Hola quisiera saber como hacer un gráfico de temperatura versus hora, pero con mis celdas de hora con este formato: hh:mm:ss?
    muchas gracias por la solución si es que la tienes.

    ResponderEliminar
  2. Muy buen ejemplo para aplicar formato condicional a un gráfico

    ResponderEliminar

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Excel, Excel 2003, Excel 2007 y el logo XL son marcas registradas de Microsoft Corporation.