プロが教えるわが家の防犯対策術!

Excel VBAで散布図を作ろうと考えています。
元のデータは添付した画像のものです。
左端にXの値があって、それ以降7列ごとに8枚の散布図を作成しようと考えております。
そこで、kを1~8まで動かし8種類の散布図を作成しようと考えているのですが、このマクロではk=1だけプログラムを回しただけで、一枚のグラフにすべての系列が載ってしまいます。
kを動かさずに、Cellの位置を指定して回した際にはうまくいったのですが、kを動かすようにしたところうまくいきません。
散布図を作る際に系列の数(私の場合7種類)を指定するにはどうしたらよいでしょうか。
どなたかご教授ください。

For k = 1 To 8
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlXYScatter
ActiveChart.SeriesCollection(1).Name = Sheets("Voltammogram").Cells(10, -5 + 7 * k)
ActiveChart.SeriesCollection(1).XValues = "=Voltammogram!$A$12:$A$250"
ActiveChart.SeriesCollection(1).Values = Sheets("Voltammogram").Range(Cells(12, -5 + 7 * k), Cells(250, -5 + 7 * k))
ActiveChart.SeriesCollection(2).Name = Sheets("Voltammogram").Cells(10, -4 + 7 * k)
ActiveChart.SeriesCollection(2).XValues = "=Voltammogram!$A$12:$A$250"
ActiveChart.SeriesCollection(2).Values = Sheets("Voltammogram").Range(Cells(12, -4 + 7 * k), Cells(250, -4 + 7 * k))

以降7列まで続きます。

「Excel VBAの散布図について」の質問画像

A 回答 (1件)

1グラフ7系列で8枚のグラフを作成ということですか?



下記のような感じで試してください。
未確認ですが多分いけると思います。

ループを2重(入れ子)にします。
外のループで、.Shapes.AddChartでグラフを描画
中のルーフで、.SeriesCollection.NewSeriesで系列を追加

.Shapes.AddChartしたとき余分な系列が入るかも知れません。
その時は削除するようにしてください。

For k = 0 To 7
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlXYScatter
For i = 1 To 7
With .SeriesCollection.NewSeries
.Name = Sheets("Voltammogram").Cells(10, 1 + i + k * 7)
.XValues = "=Voltammogram!$A$12:$A$250"
.values = Sheets("Voltammogram").Range(Cells(12, 1 + i + k * 7), Cells(250, 1 + i + k * 7))
End With
Next i
End With
Next k

AddChartの構文は
式.AddChart(Type, Left, Top, Width, Height)
というようになっています。
Typeでグラフの種類
Left, Topでシート上の描画位置
Width, Heightで幅と高さ
を指定できます。
セル基準で指定できますから挑戦してみてください。

系列名ですが
.Name = Sheets("Voltammogram").Cells(10, 1 + i + k * 7)
ではデータが直接セットされると思います。
X軸(.XValues)のように代入式にすればセル番地がセットできます。

あとSelectしなくても大丈夫ですからSelectしない書き方にも挑戦してください。

≪参考≫
シートの移動やコピー方法
http://excel.onushi.com/purpose/copy-sheet.htm
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
このプログラムをそのままコピー&ペーストして余分な系列を削除したところ、目的としていた散布図が作成できました。
本当にありがとうございました。
これからもVBAの勉強をしていきたいと思います。

お礼日時:2010/12/10 06:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!