Excel でマクロを使用して、xy 散布図またはバブル チャートのデータ ポイントにラベルを追加する方法

適用先
Excel 2010

概要

Microsoft Excel には、散布図やバブル チャートのデータ ポイントにテキスト ラベルを自動的にアタッチする組み込みコマンドはありません。 ただし、これを行う Microsoft Visual Basic for Applications マクロを作成することはできます。 この記事には、XY 散布図でこのタスクを実行するサンプル マクロが含まれています。 ただし、バブル チャートには同じコードを使用できます。

追加情報

Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 Microsoft サポート エンジニアは、特定のプロシージャの機能の説明を支援できます。 ただし、これらの例を変更して、特定の要件を満たすために追加の機能を提供したりプロシージャを構築したりすることはできません。 この記事のサンプル コードでは、データと関連するラベルが次の形式に従ってワークシートに配置されていることを前提としています。

  • 最初の列にはデータ ラベルが含まれます。
  • 2 番目の列には、散布図の x 値が含まれています。
  • 3 列目以降には、散布図の y 値が含まれます。

注: 提供されている例には y 値のデータの列が 1 つだけですが、複数の系列データを使用できます。

この記事のマクロを使用するには、次のデータを使用してグラフを作成します。

A1: ラベル B1: X 値 C1: Y 値 A2: DataPoint1 B2: 12 C2: 5 A3: DataPoint2 B3: 9 C3: 7 A4: DataPoint3 B4: 5 C4: 3 A5: DataPoint4 B5: 4 C5: 8 A6: DataPoint5 B6: 1 C6: 4 注: テーブルには空の列を含めないでください。また、データ ラベルを含む列を x 値を含む列と分離することはできません。 ラベルと値は、この記事で説明されている形式とおりにレイアウトする必要があります。 (左上のセルはセル A1 である必要はありません)。

散布図のデータ要素にテキスト ラベルを付加するには、以下の手順に従います。

  1. サンプル データを含むワークシートで、セル範囲 B1:C6 を選択します。

  2. Microsoft Office Excel 2003 およびそれ以前のバージョンの Excel では、次の手順を実行します。

    1. [挿入] メニューの [グラフ] をクリックします。
    2. [グラフウィザード - ステップ 1/4 - グラフの種類] ダイアログ ボックスで、[Standard Type] タブをクリックします。[グラフの種類] で、[XY (散布図)] をクリックし、[次へ] をクリックします。
    3. [ グラフ ウィザード] - 手順 2/4 - [グラフ ソース データ ] ダイアログ ボックスで、[データ範囲] タブをクリックします。[列] の下の [ 列] をクリックし、[次へ] をクリックします。
    4. [ グラフ ウィザード - ステップ 3/4 - グラフ オプション ] ダイアログ ボックスで、[次へ] をクリックします。
    5. [ グラフ ウィザード - 手順 4/4 - グラフの場所 ] ダイアログ ボックスで、[ 新しいシートとして表示] オプションをクリックし、[完了] をクリックします。

    Microsoft Office Excel 2007 では、次の手順を実行します。

    1. [挿入] タブをクリックし、[グラフ] グループの [散布図] をクリックし、種類を選びます。
    2. [デザイン] タブの [場所] グループにある [グラフの移動] をクリックし、[新しいシート] をクリックして、[OK] をクリックします。
  3. Alt + F11 キーを押して、Visual Basic Editor を起動します。

  4. [挿入] メニューで [モジュール] をクリックします。

  5. 次のサンプル コードをモジュール シートに入力します。

    Sub AttachLabelsToPoints()
    
       'Dimension variables.
       Dim Counter As Integer, ChartName As String, xVals As String
    
       ' Disable screen updating while the subroutine is run.
       Application.ScreenUpdating = False
    
       'Store the formula for the first series in "xVals".
       xVals = ActiveChart.SeriesCollection(1).Formula
    
       'Extract the range for the data from xVals.
       xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
          Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
       xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
       Do While Left(xVals, 1) = ","
          xVals = Mid(xVals, 2)
       Loop
    
       'Attach a label to each data point in the chart.
       For Counter = 1 To Range(xVals).Cells.Count
         ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
             True
          ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
             Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
       Next Counter
    
    End Sub
    
  6. Alt + Q キーを押して Excel に戻ります。

  7. グラフ シートに切り替えます。

  8. Excel 2003 およびそれ以前のバージョンの Excel では、[ツール] メニューの [マクロ] をポイントし、[マクロ] をクリックします。 [AttachLabelsToPoints] をクリックし、[実行] をクリックしてマクロを実行します。

    Excel 2007 では、[開発] タブをクリックし、[コード] グループの [マクロ] をクリックし、[AttachLabelsToPoints] を選択して、[実行] をクリックします。

このマクロは、セル A2:A6 のラベルをグラフ上のデータ要素にアタッチします。