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].