ExcelVBAを使用して、グラフシートの最後のデータに系列名のみ追加する方法です。
2つの例
- 既にあるデータ系列の最後のデータに系列名表示
- 新しいデータ系列を追加後に最後のデータに系列名表示
シートは2つ
- ワークシート[グラフ]
- グラフシート[データ]
参考
- Sheets:すべてのシート、グラフシート等も含む
- Worksheets:ワークシート
- Charts:グラフシート
目次
グラフ・一般機能の画面
データラベルの書式設定の「ラベルオプション」で「系列名」にチェックを入れた画面です。
上の図は全てのデータに系列名が表示されています。
既にあるデータ系列の最後のデータに系列名表示
シンプルなグラフでの説明です。
データとグラフの例
グラフのデータは1月~12月の平均気温データです。
12の平均気温データをもとにしたグラフシートです。
マクロ実行後の画面です。12月に系列名の「東京」が表示されます。
拡大した画面です。
サンプルコード
グラフシートをアクティブにしてマクロを実行する例です。
Sub sample1() ActiveChart.SeriesCollection(1).Points(12).ApplyDataLabels _ ShowSeriesName:=True, _ ShowValue:=False End Sub
説明
- SeriesCollection(1):グラフの系列は1つのみなので(1)です。
- Points(12):1月~12月までのデータなので、最後のデータは12です。
- ShowSeriesName:系列名を有効にします。既定値はFalseです。
- ShowValue:値を無効にします。既定値はTrue(有効)です。有効にすると2020年12月の平均気温「7.7」を表示します。
上記以外に設定できる項目の一部です。すべて省略可能です。
- LegendKey:凡例マーカー表示
- AutoText:文字列の自動表示
- ShowCategoryName:カテゴリー名
- ShowPercentage:%表示
- Separator:データラベルの区切指定
新しいデータ系列を追加後に最後のデータに系列名表示
追加するデータはC列です。
新しいデータ(大阪の平均気温)を追加し、そのデータの最後に系列名を表示する例です。
マクロ実行後の画面です。
サンプルコード
ワークシート[データ]をアクティブにしてマクロを実行する例です。
Sub sample2() Dim sc As Series Set sc = Charts(1).SeriesCollection.NewSeries With sc .Name = Range("C3") .Values = Range("C4:C15") .XValues = Range("A4:A15") .DataLabels.ShowValue = False End With sc.Points(12).ApplyDataLabels _ ShowSeriesName:=True, _ ShowValue:=False End Sub
説明
- 3行目:新しい系列を追加します。
- 4~9行目:追加した系列に対しての処理です。
- 5行目:Name/系列名
- 6行目:Values/軸ラベル
- 7行目:XValues/系列値
- 8行目:追加した系列のデータラベルを非表示にします。
- 10~12行目:最後の値に系列名追加します。
サンプルコード・アクティブにするシートを限定しない
どのシートをアクティブにしていても実行可能な例です。
Sub sample3() Dim ch As Chart Set ch = Charts("グラフ") Dim ws As Worksheet Set ws = Worksheets("データ") Dim sc As Series Set sc = ch.SeriesCollection.NewSeries With sc .Name = ws.Range("C3") .Values = ws.Range("C4:C15") .XValues = ws.Range("A4:A15") .DataLabels.ShowValue = False End With sc.Points(12).ApplyDataLabels _ ShowSeriesName:=True, _ ShowValue:=False End Sub