Sei sulla pagina 1di 6

Grfico de columnas con formato dinmico

Al presentar datos en forma grfica suele surgir la necesidad de resaltar uno o


varios puntos de una serie.
Supongamos esta situacin: presentamos las ventas de un ao y queremos
resaltar los mese en los que las ventas han cado por debajo de un cierto
lmite.

En el grfico del ejemplo podemos ver con facilidad en qu meses las ventas
han cado por debajo de lmite establecido. Si se trata de un grfico esttico,
donde los datos no cambian, nos basta con dar formato a los puntos de la serie
en cuestin.
Pero si queremos mostrar distintos escenarios, cambiando el valor del lmite
por ejemplo, tenemos que convertir nuestro grfico en dinmico. Es decir, que
el color de los puntos de la serie cambie de acuerdo a la relacin al valor del
lmite.
El principio bsico para lograr este tipo de grfico es separar los puntos de la
serie (los meses) en dos series: por encima y por debajo del lmite. Esto lo
haceos creando un tabla auxiliar en una rango oculto

Los valores de la columna B (sobre el lmite) los calculamos con la frmula:


=SI(F5>=$F$2,F5,NOD())
Los valores de la columna C (debajo del lmite) con:
=SI(F5<$F$2,F5,NOD())
Al representar vemos dos detalles indeseables en el grfico:
El formato numrico del eje de las Y
1.

Las columnas no estn ordenadas en forma simtrica.

El primer detalle lo corregimos usando formato personalizado para los valores


del eje

Este formato presenta los valores por miles: ###,###, "M";(###,###,)" M";0
El segundo problema se debe a que estamos representando dos series de
datos en el grfico de manera que para cada mes hay dos valores. Este
problema lo solucionamos asignando una de las series al eje Y secundario

Al hacerlo so nos presenta un tercer problema: las escalas de los ejes Y no


coinciden!

Podemos corregir esto manualmente con el men de formato del eje. Pero al
volver a cambiar el valor del lmite o cualquier otro dato, no enfrentaremos con
el mismo problema. Una solucin es fijar los valores de ambos ejes. Una
solucin ms general es programar un evento que corrija el valor del eje
secundario de manera que siempre coincida con el primario.
Empezamos por definir un nombre que se refiera al rango de los datos
(rngDatos en nuestro ejemplo se refiere a la celda que contiene el lmite y a las
celdas con los valores de las ventas).

Tambin cambiamos el nombre por defecto del objeto grfico (Grfico 1)


usando el Panel de Seleccin

En el mdulo Vba de la hoja ponemos este cdigo


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngActCell As Range
Application.ScreenUpdating = False
If Union(Target, Range("rngVentas")).Address =
Range("rngVentas").Address Then
Set rngActCell = ActiveCell
ChartObjects("grfVentas").Activate
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = _
ActiveChart.Axes(xlValue, xlPrimary).MaximumScale
rngActCell.Select
End If
Application.ScreenUpdating = True
End Sub
Un ltimo paso es ocultar el eje secundario

C:\Users\Luis Salinas\Documents\Copia de grafico con formato dinamico.xlsm

Potrebbero piacerti anche