مریل پرسید آیا راهی برای ایجاد نمودار خطی وجود دارد تا وقتی یک خط مقدار منفی را نشان دهد، رنگ خط در نقطه ای که منفی می شود تغییر کند. به عنوان مثال، در یک سری داده خاص، تا زمانی که خط نشان دهنده مقادیر مثبت باشد، آبی خواهد بود، اما زمانی که خط مقادیر منفی را نشان می دهد، به قرمز تغییر می کند.
متأسفانه هیچ راهی برای انجام آسان این کار در اکسل وجود ندارد. با این حال، چند راه حل وجود دارد که می توانید امتحان کنید. اولین مورد استفاده از ماکرو برای تغییر رنگ خطوط خطوط نمودار است که مقادیر منفی را نشان می دهد. ماکرو زیر نمونه ای از چنین رویکردی است:
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 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 را اجرا میکنید، نمودار را بررسی میکند و برای بخشهای خط بین مقادیر نقطه داده منفی، رنگ خط را به قرمز تغییر میدهد. برای بخش های خطی که نقاط داده مثبت را به هم متصل می کنند، رنگ خط روی سبز تنظیم می شود.
مشکل این راه حل این است که فقط یک تقریب ارائه می دهد. فقط با خطوطی که دو نقطه داده را به هم متصل می کنند کار می کند و می تواند کل بخش خط را تغییر دهد یا خیر. اگر نقطه داده ابتدایی مثبت و نقطه داده پایانی منفی باشد، نمی تواند رنگ یک خط را درست با تبدیل به مقادیر منفی تغییر دهد.