エクセルのグラフで凡例項目が増えた場合に自動でグラフの表示を更新するVBAを紹介します。
例:
を
のように名前が増えたらグラフの凡例項目も増えるというものです。
今回はシートがアクティブになった時に名前欄が空ではなかったら、その凡例を表示するVBAで実装してみようと思います。
シートのアクティブ化をトリガ―にしていますが、シートの変更(Worksheet_Change)をトリガーにしてもいいかもしれません。
データは任意で、「挿入」⇒「縦棒グラフ」などからとりあえずグラフを作成してください。
VBAの処理は下記になります。
Sub Worksheet_Activate() Set ws = ThisWorkbook.Worksheets("sheet1") Dim cht As Chart Set cht = ws.ChartObjects("グラフ 1").Chart Dim i As Long s = 2 '開始位置 e = 30 '終了位置 For i = s To e If ws.Cells(i, 1).Value <> "" Then '空ではなかったら表示 With cht .FullSeriesCollection(i - 1).IsFiltered = False End With Else '空だったら非表示 With cht .FullSeriesCollection(i - 1).IsFiltered = True End With End If DoEvents Next i End Sub
ちなみにグラフの名前はグラフを選択状態にしたときに左上の名前欄に表示されます。
グラフ側の設定としてグラフの範囲を下側に増える想定で、広めにとっておきます。(あまり広いと処理に時間がかかります。)
データソースの選択は下記のようになります。
VBAではその範囲の名前項目をループ処理して、空ではなかったら表示、空だったら非表示にする処理を入れています。
こうすることによって、データの有無によって表示を変えることが出来ます。
グラフの設定で凡例項目を自動で変える設定が出来てもいいかなと思ったのですが見当たらなかったので、多少重いですがVBAで実装してみました。
下記はサンプルのファイルになります。
2Dグラフの凡例を更新する (1018 ダウンロード )
コメント