I colori positivi e negativi in ​​un grafico

Merril chiesto se c'era un modo per creare un grafico linea in modo che quando una linea rappresentato un valore negativo, il colore della linea cambierebbe nel momento in cui è andato negative. Per esempio, in una particolare serie di dati, finché la linea rappresentata valori positivi, sarebbe blu, ma quando la linea rappresentata valori negativi, cambierebbe al rosso.

Purtroppo non c'è modo di fare facilmente questo in Excel. Ci sono, tuttavia, un paio di soluzioni alternative si può provare. Il primo è quello di utilizzare una macro per cambiare i colori delle linee di linee grafico che rappresentano valori negativi. La macro seguente è un esempio di tale approccio:

Sub PosNegLine ()
ChtSeries Dim As Series
Dim SeriesNum As Integer
Dim SeriesColor As Integer
MyChart fioco come Grafico
Dim R come gamma
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 'rosso
SeriesNum = 1

Impostare MyChart = ActiveSheet.ChartObjects (1) .Chart
Set chtSeries = MyChart.SeriesCollection (SeriesNum)
Imposta R = GetChartRange (MyChart, 1, "Valori")

Per i = 2 Per R.Cells.Count
LastPtColor = IIf (R.Cells (i - 1) .Value <0, NegColor, PosColor)
CurrPtColor = IIf (R.Cells (i) .value Abs (R.Cells (i) .Value) Poi
LineColor = LastPtColor
Altro
LineColor = CurrPtColor
End If
End If
chtSeries.Points (i) .Border.ColorIndex = LineColor
Next i
End Sub

Funzione GetChartRange (Ch Come Grafico, Ser As Integer, _
ValXorY As String) come gamma
Dim SeriesFormula As String
Dim ListSep As String * 1
Dim Pos As Integer
LSeps Dim () As Integer
Dim Txt As String
Dim i As Integer

Set GetChartRange = Nothing

On Error Resume Next
SeriesFormula = Ch.SeriesCollection (Ser) .Formula
ListSep = ","
Per i = 1 Per Len (SeriesFormula)
Se Mid $ (SeriesFormula, i, 1) = ListSep Poi
Pos = Pos + 1
ReDim Preserve LSeps (Pos)
LSeps (Pos) = i
End If
Next i

Se UCase (ValXorY) = "XValues" Allora
Txt = Mid $ (SeriesFormula, LSeps (1) + 1, LSeps (2) - LSeps (1) - 1)

Set GetChartRange = Range (Txt)
End If

Se UCase (ValXorY) = "VALORI" Allora
Txt = Mid $ (SeriesFormula, LSeps (2) + 1, LSeps (3) - LSeps (2) - 1)

Set GetChartRange = Range (Txt)
End If
End Function

Quando si seleziona un grafico e quindi eseguire la macro PosNegLine, si guarda attraverso il grafico e, per segmenti di linea tra i valori del punto di dati negativi, cambia il colore della linea di rosso. Per segmenti di linea che collegano punti di dati positivi, il colore della linea è impostato su verde.

Il problema di questa soluzione è che fornisce solo un'approssimazione; funziona solo con linee collega due punti di dati, e può sia cambiare l'intero segmento di linea o no. Se il punto di dati di inizio è positivo e il punto dati desinenza è negativo, non può cambiare il colore di un diritto linea che passa in valori negativi.

ExcelTips è la vostra fonte per la formazione Microsoft Excel conveniente. Questo suggerimento (1796) si applica a Microsoft Excel 2007 e il 2010. Si può trovare una versione di questo suggerimento per l'interfaccia più vecchio menù di Excel qui: colori positivi e negativi in ​​un grafico.