グラフの正色と負色(Microsoft Excel)
メリルは、線が負の値を表すときに、線が負になった時点で線の色が変わるように折れ線グラフを作成する方法があるかどうかを尋ねました。たとえば、特定のデータ系列では、線が正の値を表す限りは青になりますが、線が負の値を表す場合は赤に変わります。
残念ながら、Excelでこれを簡単に行う方法はありません。ただし、試すことができるいくつかの回避策があります。 1つ目は、マクロを使用して、負の値を表すグラフの線の色を変更することです。次のマクロは、そのようなアプローチの例です。
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マクロを実行すると、グラフが調べられ、負のデータポイント値の間の線分について、線の色が赤に変わります。正のデータポイントを接続する線分の場合、線の色は緑に設定されます。
このソリューションの問題は、近似値しか提供しないことです。 2つのデータポイントを結ぶ線でのみ機能し、線分全体を変更することも、変更しないこともできます。開始データポイントが正で終了データポイントが負の場合、負の値に渡されるときに線の色を正しく変更することはできません。
別のアプローチは、データポイントが正か負かに基づいて、異なる色または形状としてデータポイントをフォーマットすることです。これを実現する方法については、Jon PeltierのWebサイト(
)で詳しく説明されています。
http://www.peltiertech.com/Excel/Charts/ConditionalChart1.html
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(1999)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。
link:/ excelribbon-Positive_and_Negative_Colors_in_a_Chart [チャートの正と負の色]
。