Colores positivos y negativos en un gráfico (Microsoft Excel)
Merril preguntó si había una manera de crear un gráfico de líneas para que cuando una línea representara un valor negativo, el color de la línea cambiara en el punto en el que se volvió negativo. Por ejemplo, en una serie de datos en particular, siempre que la línea represente valores positivos, será azul, pero cuando la línea represente valores negativos, cambiará a rojo.
Desafortunadamente, no hay forma de hacer esto fácilmente en Excel. Sin embargo, hay un par de soluciones que puede probar. La primera es usar una macro para cambiar los colores de las líneas de los gráficos que representan valores negativos. La siguiente macro es un ejemplo de este enfoque:
Sub PosNegLine() Dim chtSeries As Series Dim SeriesNum As Integer Dim SeriesColor As Integer Dim MyChart As Chart Dim R As Range Dim i As Integer Dim LineColor As Integer Dim PosColor As Integer Dim NegColor As Integer Dim LastPtColor As Integer Dim CurrPtColor As Integer PosColor = 4 'Green NegColor = 3 'red SeriesNum = 1 Set MyChart = ActiveSheet.ChartObjects(1).Chart Set chtSeries = MyChart.SeriesCollection(SeriesNum) Set R = GetChartRange(MyChart, 1, "Values") For i = 2 To R.Cells.Count LastPtColor = IIf(R.Cells(i - 1).Value < 0, NegColor, PosColor) CurrPtColor = IIf(R.Cells(i).Value < 0, NegColor, PosColor) If LastPtColor = CurrPtColor Then LineColor = LastPtColor Else If Abs(R.Cells(i - 1).Value) > Abs(R.Cells(i).Value) Then LineColor = LastPtColor Else LineColor = CurrPtColor End If End If chtSeries.Points(i).Border.ColorIndex = LineColor Next i End Sub
Function GetChartRange(Ch As Chart, Ser As Integer, _ ValXorY As String) As Range Dim SeriesFormula As String Dim ListSep As String * 1 Dim Pos As Integer Dim LSeps() As Integer Dim Txt As String Dim i As Integer Set GetChartRange = Nothing On Error Resume Next SeriesFormula = Ch.SeriesCollection(Ser).Formula ListSep = "," For i = 1 To Len(SeriesFormula) If Mid$(SeriesFormula, i, 1) = ListSep Then Pos = Pos + 1 ReDim Preserve LSeps(Pos) LSeps(Pos) = i End If Next i If UCase(ValXorY) = "XVALUES" Then Txt = Mid$(SeriesFormula, LSeps(1) + 1, LSeps(2) - LSeps(1) - 1) Set GetChartRange = Range(Txt) End If If UCase(ValXorY) = "VALUES" Then Txt = Mid$(SeriesFormula, LSeps(2) + 1, LSeps(3) - LSeps(2) - 1) Set GetChartRange = Range(Txt) End If End Function
Cuando selecciona un gráfico y luego ejecuta la macro PosNegLine, examina el gráfico y, para segmentos de línea entre valores de puntos de datos negativos, cambia el color de la línea a rojo. Para los segmentos de línea que conectan puntos de datos positivos, el color de la línea se establece en verde.
El problema con esta solución es que proporciona solo una aproximación; solo funciona con líneas que conectan dos puntos de datos y puede cambiar todo el segmento de línea o no. Si el punto de datos inicial es positivo y el punto de datos final es negativo, no puede cambiar el color de una línea justo cuando pasa a valores negativos.
Otro enfoque es dar formato a los puntos de datos como diferentes colores o formas, según sean positivos o negativos. Una forma de lograr esto se detalla en el sitio web de Jon Peltier, ubicado aquí:
http://www.peltiertech.com/Excel/Charts/ConditionalChart1.html
_Nota: _
Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.
link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador]
.
ExcelTips es su fuente de formación rentable en Microsoft Excel.
Este consejo (1999) se aplica a Microsoft Excel 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y posteriores) aquí:
link: / excelribbon-Positive_and_Negative_Colors_in_a_Chart [Colores positivos y negativos en un gráfico]
.