图表中的正色和负色(Microsoft Excel)
Merril询问是否有一种创建折线图的方法,以便当一条线表示负值时,该线的颜色会在变为负值时改变。例如,在特定的数据系列中,只要该线表示正值,它就会是蓝色,但是当该线表示负值时,它将变成红色。
不幸的是,没有办法在Excel中轻松做到这一点。但是,您可以尝试几种解决方法。第一种是使用宏更改代表负值的图表线的线颜色。以下宏是这种方法的示例:
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
选择图表然后运行PosNegLine宏时,它会遍历图表,并且对于负数据点值之间的线段,将线颜色更改为红色。对于连接正数据点的线段,线颜色设置为绿色。
该解决方案的问题在于它仅提供了一个近似值。它仅适用于连接两个数据点的线,并且不能更改整个线段。如果开始的数据点为正,而结束的数据点为负,则当它传递给负值时,它无法更改线条的颜色。
另一种方法是根据数据点是正还是负将其格式化为不同的颜色或形状。在Jon Peltier的网站上详细介绍了实现此目标的方法:
http://www.peltiertech.com/Excel/Charts/ConditionalChart1.html
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(1999)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: