【グラフ】特定値に系列名追加 | Chart.ApplyDataLabels メソッド

ExcelVBAを使用して、グラフシートの最後のデータに系列名のみ追加する方法です。

2つの例
  1. 既にあるデータ系列の最後のデータに系列名表示
  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
目次