- ベストアンサー
エクセルの散布図にラベル(系列が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 どうぞよろしくお願いします。
お礼
どうもありがとうございました。 無事ラベルを表示することができ、今までラベルがなく とても使いにくかった散布図がとても見やすく、便利になりました。 今回は比較的急ぎで必要だったのですが、 今後もっと勉強をして、皆さんのお手を煩わせないように 努力したいです。 2度にもわたるご回答、どうもありがとうございました。