3

このような Excel チャートで特別なポイントを示すために矢印を使用する例をいくつか見てき ました。しかし、VBAを使用してこれを実現したいと考えています。たとえば、チャート上のポイントが 90 より大きい場合、そのポイントに対応する矢印が表示されます。

VBAでどうすればいいのか教えてください。どんな助けでも大歓迎です。

アップデート

ポイントの色を変更するだけでなく、そのポイントをより目立たせるための良い提案が他にあります。

更新 2

現在、このコードを使用しています。

For Each oCell In Range("e4:e" & LastRow) 'loop

       If oCell.Value < sd13 Then    'rule 13s
            Range("V4").Value = "Rule 13s voilated!"
            Range("V4:w4").Interior.Color = RGB(255, 0, 0)
         ActiveWorkbook.Sheets("LDL-C").ChartObjects("Chart 1047").Chart.SeriesCollection(1).Points(j).MarkerBackgroundColor = RGB(255, 0, 0)
            End If
            Next
4

4 に答える 4

2

ポイントの色を変更するだけでなく、そのポイントをより目立たせるための良い提案が他にあります。

これは役に立ちますか?

With ActiveChart
    For i = 1 To .SeriesCollection.Count
        a = .SeriesCollection(i).Values
        For l = 1 To .SeriesCollection(i).Points.Count
            If mymax < a(l) Then
                mymax = a(l)
                .SeriesCollection(i).DataLabels.Select
                Selection.Format.Line.Visible = msoTrue
                Selection.Format.Line.Visible = msoFalse

                .SeriesCollection(i).Points(l).DataLabel.Select
                .SeriesCollection(i).Points(l).Select
                .SeriesCollection(i).DataLabels.Select
                .SeriesCollection(i).Points(l).DataLabel.Select

                With Selection.Format.Line
                    .Visible = msoTrue
                    .ForeColor.ObjectThemeColor = msoThemeColorAccent1
                    .ForeColor.TintAndShade = 0
                    .ForeColor.Brightness = 0
                End With
                With Selection.Format.Line
                    .Visible = msoTrue
                    .Weight = 2
                End With
            End If
        Next l
    Next
End With

スナップショット

ここに画像の説明を入力

別のスナップショット

ここに画像の説明を入力

于 2012-07-05T10:01:45.750 に答える
1

矢印を使用してそれを行う方法はわかりませんが、関心のあるポイントの色を変更する方法は次のとおりです。

       With ActiveSheet.ChartObjects(ChartName).Chart.SeriesCollection("NCDs")
            For currentPoint = 1 To .Points.Count
                If Range("G" & currentPoint + 34).Value = True Then
                    With .Points(currentPoint).Format
                        .Fill.BackColor.RGB = RGB(50, 150, 50)
                        .Fill.ForeColor.RGB = RGB(50, 150, 50)
                        .Line.ForeColor.RGB = RGB(50, 150, 50)
                    End With
                Else
                    With .Points(currentPoint).Format
                        .Fill.BackColor.RGB = RGB(150, 50, 50)
                        .Fill.ForeColor.RGB = RGB(150, 50, 50)
                        .Line.ForeColor.RGB = RGB(150, 50, 50)
                    End With
                End If
            Next currentPoint
        End With

名前と条件句を変更するだけです...また、.Points(currentPoint)オブジェクトには、矢印の配置に使用できるx、yの場所プロパティがあります。それについてはよくわかりませんが、それは良い出発点のようです。

于 2012-07-05T09:05:32.107 に答える
1

ええ、VBAが必要です。VBA の問題は、誰かが手順を実行するか、Worksheet_Calculate イベントを設定するかなどを覚えておく必要があることです。そのため、必然的にデータが変更されると、チャートはデータに追いつきます。

そこで、Excel の数式に依存する VBA 以外のアプローチを次に示します。

Siddharth の回答で提供された単純なデータ。MAX と呼ぶ列を追加しました。セル C2 の数式を C11 にコピーすると、

=IF(B2=MAX(B$2:B$11),B2,NA())

最初のグラフは、通常の一連のデータを集合縦棒グラフにプロットします。2 番目のグラフには、MAX が追加されています。3 番目のグラフでは、オーバーラップを 100% に変更したため、青色のバーが対応する灰色のバーを覆っています。次のグラフ MAX シリーズにデータ ラベルを追加しました。最後のグラフでは、系列名を表示するようにデータ ラベルをフォーマットしました。フォントの色はバーの色と一致しています。

条件付きグラフを作成する

ここに元のデータとグラフ (上) と変更されたデータと変更されたグラフ (下) があります。数式はすべてそれを行いました。何らかの方法で VBA を再実行する必要はありません。

条件付MAXチャートの運用

すばらしいのは、1 位が同点の場合、余分な努力をしなくても、2 つのラベル付きの青いバーが表示されることです。

MIN を示すために 3 番目の系列を追加するのはそれほど難しくありません。

条件付き MIN および MAX チャートの操作

于 2020-01-23T23:17:30.080 に答える