ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
37 visibility
موضوع: آفیس توسط:

مریل پرسید آیا راهی برای ایجاد نمودار خطی وجود دارد تا وقتی یک خط مقدار منفی را نشان دهد، رنگ خط در نقطه ای که منفی می شود تغییر کند. به عنوان مثال، در یک سری داده خاص، تا زمانی که خط نشان دهنده مقادیر مثبت باشد، آبی خواهد بود، اما زمانی که خط مقادیر منفی را نشان می دهد، به قرمز تغییر می کند.

متأسفانه هیچ راهی برای انجام آسان این کار در اکسل وجود ندارد. با این حال، چند راه حل وجود دارد که می توانید امتحان کنید. اولین مورد استفاده از ماکرو برای تغییر رنگ خطوط خطوط نمودار است که مقادیر منفی را نشان می دهد. ماکرو زیر نمونه ای از چنین رویکردی است:

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 را اجرا می‌کنید، نمودار را بررسی می‌کند و برای بخش‌های خط بین مقادیر نقطه داده منفی، رنگ خط را به قرمز تغییر می‌دهد. برای بخش های خطی که نقاط داده مثبت را به هم متصل می کنند، رنگ خط روی سبز تنظیم می شود.

مشکل این راه حل این است که فقط یک تقریب ارائه می دهد. فقط با خطوطی که دو نقطه داده را به هم متصل می کنند کار می کند و می تواند کل بخش خط را تغییر دهد یا خیر. اگر نقطه داده ابتدایی مثبت و نقطه داده پایانی منفی باشد، نمی تواند رنگ یک خط را درست با تبدیل به مقادیر منفی تغییر دهد.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 35 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 29 visibility
1 امتیاز مثبت 0 امتیاز منفی
1 پاسخ 310 visibility
ارسال شده در 26 فروردین 1400 موضوع: سخت افزار توسط: بی نام
0 دوستدار 0 امتیاز منفی
0 پاسخ 305 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 34 visibility
ارسال شده در 26 تیر 1402 موضوع: آفیس توسط: Admin

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

139 نفر آنلاین
0 عضو و 139 مهمان در سایت حاضرند
بازدید امروز: 932
بازدید دیروز: 25180
بازدید کل: 20338289
...