Martinには、50行のデータを含むワークシートがあり、各行は1つのオブジェクトを表しています。列Aにはオブジェクトの名前が含まれ、列BにはそのX座標が含まれ、列CにはそのY座標が含まれます。彼がX-Y散布図(列Bと列C)を作成すると、必要に応じて、オブジェクトの位置を示す点の配列を示すグラフが作成されます。ただし、Martinは、データポイントに個々の名前(列Aから)でラベルを付けることができないようです。彼がデータポイントにラベルを付けようとするとき、利用可能な唯一のオプションは、各ポイントにそのX値、Y値、またはシリーズ名でラベルを付けることです。マーティンは、列Aを使用してプロットされたデータポイントにラベルを付ける方法があるかどうか疑問に思います。

これは手動で行うことができますが、せいぜい面倒です。 50行の場合、すぐに残酷になるため、マクロ指向のアプローチを検討するのが最善です。 1つのアイデアは、次のようなマクロを使用することです。このマクロは、X-Yチャートのデータポイントをステップスルーし、列Aからラベル値を読み取ります。

Sub DataLabelsFromRange()

Dim Cht As Chart     Dim i, ptcnt As Integer

Set Cht = ActiveSheet.ChartObjects(1).Chart     On Error Resume Next     Cht.SeriesCollection(1).ApplyDataLabels _       Type:=xlDataLabelsShowValue, _       AutoText:=True, _       LegendKey:=False

ptcnt = Cht.SeriesCollection(1).Points.Count     For i = 1 To ptcnt         Cht.SeriesCollection(1).Points(i).DataLabel.Text = _           ActiveSheet.Cells(i + 1, 1).Value     Next i End Sub

マクロは、ワークシートの最初の行にヘッダー情報が含まれ、実際のデータが行2から始まることを前提としています。データが実際に行1から始まる場合は、「i +1」を単に「i」に変更します。 (このマクロアプローチは、実際にはJohnWalkenbachの著書_Excel2003 Power Programming with VBAの570〜571ページにあるマクロのバリエーションです。_本のタイトルにもかかわらず、マクロはそれ以降のバージョンのExcelでも問題なく機能します。)

かなりユニークな非マクロアプローチの1つは、Excelのカスタム形式を使用することです。

あなたがする必要があるのはあなたが表示したいテキストだけを含むカスタムフォーマットの束を設定することです。たとえば、セルA3からC3にAge、15、および23の値がある場合、値がそれぞれ15または23のままであっても、セルB3またはC3のいずれかをフォーマットして「Age」という単語を表示できます。セルのカスタム形式に「年齢」(引用符を含む)を入力するだけです。次に、グラフをフォーマットして、X値またはY値のラベルを表示します。

これを行うと、グラフのX軸の値は、おそらくすべてフォーマット名(つまり、年齢)に変更されます。ただし、X軸を[一般]ではなく[数値](この場合は小数点以下の桁なし)にフォーマットすると、グラフは正しく表示されます。

このアプローチは、データ系列の各値に多数のカスタム形式を設定して適用するため、実装に少し時間がかかる場合があります。独自のマクロを作成してテストしたり、多数のカスタム形式を作成したりしたくない場合は、いつでも他の人が作成したアドインを利用できます。 MicrosoftMVPのRobBoveyは、Excel用の優れた(無料の)アドインを作成しました。これには、X-Yラベリング機能が含まれています。次のアドレスからダウンロードできます:

http://www.appspro.com/Utilities/ChartLabeler.htm

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(11652)は、Microsoft Excel 2007および2010に適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。