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

適用先
Excel 2010

概要

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

追加情報

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

  • 最初の列には、データ ラベルが含まれています。
  • 2 番目の列には、xy (散布図) グラフの x 値が含まれています。
  • 3 番目以降の列には、xy (散布図) グラフの 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 である必要はありません)。

xy (散布図) グラフのデータ ポイントにテキスト ラベルを添付するには、次の手順に従います。

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

  2. Microsoft Office Excel 2003 以前のバージョンの Excel では、次の手順に従います。

    1. [挿入] メニューの [グラフ] をクリックします。
    2. [グラフ ウィザード - 手順 1/4 - グラフの種類] ダイアログ ボックスで、[Standardの種類] タブをクリックします。[グラフの種類] で [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 のラベルをグラフ上のデータ ポイントにアタッチします。