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 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (1999)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다. 여기에서 Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.

link : / excelribbon-Positive_and_Negative_Colors_in_a_Chart [차트의 양수 및 음수 색상].