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列まで続きます。
No.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
ご回答ありがとうございました。
このプログラムをそのままコピー&ペーストして余分な系列を削除したところ、目的としていた散布図が作成できました。
本当にありがとうございました。
これからもVBAの勉強をしていきたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 請求書自動作成 3 2022/04/24 01:58
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで、シート間の転記するコードをFOR~NEXTで教えてください。 9 2023/04/30 20:04
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Visual Basic(VBA) 4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。 Sheet2の指定範囲、Range(" 2 2022/11/30 16:37
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【Microsoft Forms】回答を削除...
-
【スプレッドシート】指定の日...
-
マイクロソフト 一時使用コード...
-
VLOOKUP関数について
-
Microsoft Formsの「個人情報や...
-
英数字のみ全角から半角に変換
-
Microsoft Formsで「応答」から...
-
1つのPCに「Excel 2010」「Exc...
-
vb.net オブジェクト指向につい...
-
会社におけるOfficeライセンス...
-
Office 2021 Professional Plus...
-
エクセルで英文字に入れた下線...
-
マクロ自動コピペ 貼り付ける場...
-
会社PCのメールが更新されない
-
Outlookでの時間指定送信機能に...
-
エクセルで串刺ししたシートの...
-
マイクロソフト オフィスについて
-
Excel テーブル内の空白行の削除
-
エクセルのシフト表を簡単にGoo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
マイクロソフト 一時使用コード...
-
英数字のみ全角から半角に変換
-
Office2021を別のPCにインスト...
-
Microsoft Formsの「個人情報や...
-
officeビジネス型のワードやエ...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
Microsoft Officeを2台目のPCに...
-
何このステータスバー
-
2つのシートの一致する行のセ...
-
会社のTeamsのことで相談です。...
-
エクセルにリンクされるのをし...
-
Windows 11で、IME言語バー(IM...
-
office2010とoffice365の共存で...
-
Microsoftのパソコンです。 エ...
-
エクセルでXLOOKUP関数...
-
Excel関数について質問ですm(__)m
-
VBA
-
自分の専門分野の仕事。初見で...
おすすめ情報