質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

14520閲覧

【マクロ】出力したグラフを重ねたいです。

macro-beginner

総合スコア25

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2017/01/26 09:20

出力したグラフを重ねたいのですがググっても全然でてこないのでわかりませんでした。
なのでどのように組んだらいいのかどなたかご教授お願いしたいです。
よろしくお願い致します。

イメージ説明
出てきたやつを↑
下図のようにしたい↓
イメージ説明

Sub GrapfGT() Dim op As Worksheet, sn As Worksheet, i As Integer Dim cht As ChartObject Dim rng As Range Set op = Workbooks("CAB-Grapf.xls").ActiveSheet Application.ScreenUpdating = False 'データ取得ループ For i = 1 To Worksheets(1).Range("H1").Value If i > 10 Then MsgBox "データーがそんなにないよ(V)o¥o(V)" Exit For End If 'グラフ作成 Set cht = ActiveSheet.ChartObjects.Add(100, 100, 600, 200) cht.Chart.ChartType = xlXYScatterSmooth 'データ範囲の取得 Worksheets(2 + i).Activate Set rng = Range("A1014:A3014, B1014:B3014") 'Sheets(op.Cells(2 + i - 1, "B").Value). 'グラフにデータソースを設定 Worksheets(2).Activate cht.Chart.SetSourceData Source:=rng Next End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

複数のシートにあるデータをひとつのグラフにまとめたいということですね。

この場合、毎回グラフを作成してデータをセットするのではなく、最初に作ったグラフにデータ系列を追加していくことになります。
⇒参考

Sub GrapfGT() Dim op As Worksheet, sn As Worksheet, i As Integer Dim cht As ChartObject Dim rng As Range Set op = Workbooks("CAB-Grapf.xls").ActiveSheet Application.ScreenUpdating = False 'グラフ作成 Set cht = ActiveSheet.ChartObjects.Add(100, 100, 600, 200) cht.Chart.ChartType = xlXYScatterSmooth 'データ取得ループ For i = 1 To Worksheets(1).Range("H1").Value If i > 10 Then MsgBox "データーがそんなにないよ(V)o¥o(V)" Exit For End If With Worksheets(2 + i) 'Sheets(op.Cells(2 + i - 1, "B").Value) 'データ範囲の取得 If i = 1 Then '初回は見出し列も取得 Set rng = .Range("A1014:A3014, B1014:B3014") 'グラフにデータソースを設定 cht.Chart.SetSourceData Source:=rng Else '2回目以降はデータ系列を追加 Set rng = .Range("B1014:B3014") cht.Chart.SeriesCollection.Add rng End If cht.Chart.SeriesCollection(i).Name = "データ" & i End With Next End Sub

変更のポイントは
・グラフは(ループの外で)1回だけ作成
・初回のデータ取得時のみA列も取得し、データソースを設定する
・2回目以降はB列のみ取得し、データ系列を追加する
・データ系列が複数になるため名前をつける

といったところです。

お試しください。

投稿2017/01/26 10:39

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macro-beginner

2017/01/26 23:43

いつもいつもありがとうございます! おかげさまで実現できました! またよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問