エクセルの散布図にラベル(系列が2つ)
エクセルの散布図にラベルを付けたいのですが、
いろいろ試しているのですが上手くいきません。(マクロ初心者です。)
OKwaveにある質問も見たのですが、同じような状況が見当たらず困っていました。
http://support.microsoft.com/kb/213750
↑「microsoft サポートオンライン」
のマクロを参考にし、やってみたのですが、系列が1つしかない場合は上手くいくのですが、系列2つでやると
「オブジェクト変数またはwithブロック変数が設定されていません」
というエラーが出てきてしまいます。
どなたかお知恵を貸していただければ幸いです。
・一つのグラフに系列が2つあり、それぞれいくつかのデータがある。
(例えば、下のデータのB2:C4は系列1「野菜」、
B5:C7は系列2「果物」となっている。)
A1:ラベル_____B1:X軸____C1:Y軸
A2:キャベツ___B2:12______C2:5
A3:トマト_____B3:9_______C3:7
A4:キュウリ___B4:5_______C4:3
A5:イチゴ_____B5:4_______C5:8
A6:ミカン_____B6:1_______C6:4
A7:リンゴ_____B7:1_______C7:4
この表で
一つの表に2系列をおさめ、
なおかつそれぞれの点に「キャベツ」「イチゴ」などのラベルを表示したいと思っています。
「系列1」の点は「■」「系列2」の点は「●」と分けてあります。
実際にはもっとデータ数が多いため、系列を全て分ける、というのは難しいです。
VBAを使って出来るやり方がありましたら是非教えて下さい。
なお、サポートオンラインからコピーして使った
マクロは以下のとおりです。
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
どうぞよろしくお願いします。
補足
ご回答ありがとうございます。 >>これはExcel散布図にしか対応できないようです。 >の意味がわかりません。 Microsoft Graph散布図を貼り付けたExcel2003で同マクロを実行したのですが、 エラーが発生したため上記のように記述しました。 >データラベルの作成、オプション(任意の)をオンにします。 >(データラベルのオプションのないグラフがありました?) >できたデータラベルの内容を任意のテキストに置き換えます。 >マクロでなくとも同じです。 >データラベルをクリックすると編集可能になりますから、 > >編集されたテキストは、データ変更に追従しないようです。 こちらの説明が足りず、申し訳ございません。 データラベルの機能をONにして、手動でデータラベルを編集できることは、 存じ上げているのですが、編集量が膨大となってしまいます。 その為データシートにラベル文字列を記述しておき、 マクロで一括修正できないかと模索しております。