回答編集履歴
3
追記
answer
CHANGED
@@ -5,4 +5,73 @@
|
|
5
5
|
今回実現したいのはどちらでしょうか?
|
6
6
|
※系列の追加はできているので後者(別データで別グラフを作成したい)かな?と思っています。
|
7
7
|
|
8
|
-
今回の完成形がイメージできれば回答しやすくなります。
|
8
|
+
今回の完成形がイメージできれば回答しやすくなります。
|
9
|
+
|
10
|
+
回答を受けて追記
|
11
|
+
---
|
12
|
+
普通の折れ線グラフのようなもので考えていましたが、散布図などの系列X/Yなどを持つグラフですね。失礼しました。
|
13
|
+
|
14
|
+
以下のように、追加した系列に系列Yデータ(.Values)も設定してあげればできそうです。
|
15
|
+
```
|
16
|
+
Sub GrapfGS()
|
17
|
+
Dim op As Worksheet, sn As Worksheet, i As Integer, names As String, xname As String
|
18
|
+
Dim cht As ChartObject
|
19
|
+
Dim rng As Range
|
20
|
+
Dim chart1 As Chart
|
21
|
+
Dim shtDat As WorkSheet '★追加
|
22
|
+
|
23
|
+
Set op = Workbooks("CAB-Grapf.xls").ActiveSheet
|
24
|
+
|
25
|
+
Application.ScreenUpdating = False
|
26
|
+
|
27
|
+
'グラフ作成
|
28
|
+
Set cht = ActiveSheet.ChartObjects.Add(100, 100, 350, 260)
|
29
|
+
cht.Chart.ChartType = xlXYScatterSmoothNoMarkers
|
30
|
+
cht.Name = "G-S"
|
31
|
+
cht.Top = Range("H4").Top
|
32
|
+
cht.Left = Range("H4").Left
|
33
|
+
cht.Chart.Axes(xlValue).MinimumScaleIsAuto = True
|
34
|
+
cht.Chart.Axes(xlValue).MaximumScaleIsAuto = True
|
35
|
+
cht.Chart.Axes(xlCategory).MaximumScale = 300
|
36
|
+
cht.Chart.Axes(xlCategory).MinimumScale = 0
|
37
|
+
cht.Chart.Legend.IncludeInLayout = False
|
38
|
+
cht.Chart.Legend.Position = xlLegendPositionCorner
|
39
|
+
cht.Chart.Legend.Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorBackground1
|
40
|
+
cht.Chart.Axes(xlValue).TickLabels.NumberFormatLocal = General
|
41
|
+
cht.Chart.Axes(xlCategory).TickLabels.NumberFormatLocal = General
|
42
|
+
cht.Chart.HasTitle = True
|
43
|
+
cht.Chart.ChartTitle.Text = "G-S"
|
44
|
+
|
45
|
+
'データ取得ループ
|
46
|
+
For i = 1 To Worksheets(1).Range("H1").Value
|
47
|
+
If i > 10 Then
|
48
|
+
MsgBox "データーがそんなにないよ(V)o¥o(V)"
|
49
|
+
Exit For
|
50
|
+
End If
|
51
|
+
Set shtDat = Worksheets(2 + i)
|
52
|
+
'データ範囲の取得
|
53
|
+
If i = 1 Then
|
54
|
+
'初回は見出し列も取得
|
55
|
+
cht.Chart.SetSourceData Source:=shtDat.Range("T1014:T3014, N1014:N3014")
|
56
|
+
With cht.Chart.SeriesCollection(1)
|
57
|
+
.name = "系列" & i
|
58
|
+
.XValues = shtDat.Range("T1014:T3014")
|
59
|
+
.Values = shtDat.Range("N1014:N3014")
|
60
|
+
End With
|
61
|
+
Else
|
62
|
+
'2回目以降はデータ系列を追加
|
63
|
+
With cht.Chart.SeriesCollection.NewSeries
|
64
|
+
.name = "系列" & i
|
65
|
+
.XValues = shtDat.Range("T1014:T3014")
|
66
|
+
.Values = shtDat.Range("N1014:N3014")
|
67
|
+
End With
|
68
|
+
End If
|
69
|
+
'グラフの名前をDATAシートから取得>Grapfシートを選択して貼り付け。
|
70
|
+
names = shtDat.Range("B" & 9).Value
|
71
|
+
Worksheets(2).Select
|
72
|
+
cht.Chart.SeriesCollection(i).Name = names
|
73
|
+
```
|
74
|
+
|
75
|
+
改修箇所は、shtDat変数を追加し、データ取得ループ内の処理を変更しました。
|
76
|
+
|
77
|
+
いま手元に動作確認できる環境がないので机上ロジックで申し訳ないですが、お試しください。
|
2
修正2
answer
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
質問のタイトル
|
1
|
+
質問のタイトルは「グラフを重ねたい」(⇒つまり系列を追加したい)となっていますが、質問本文からは「X軸・Y軸ともに別の値をとりたい(⇒つまり別のグラフを作成したい)」という風に読み取れます。
|
2
2
|
|
3
|
+
ちなみに提示いただいたソースコードは以前の質問の際にアドバイスさせていただいた「1つのグラフに系列を追加していくロジック」だと思います。
|
4
|
+
|
3
5
|
今回実現したいのはどちらでしょうか?
|
6
|
+
※系列の追加はできているので後者(別データで別グラフを作成したい)かな?と思っています。
|
4
7
|
|
5
|
-
提示いただいたソースコードは以前の質問の際にアドバイスさせていただいた「1つのグラフに系列を追加していくロジック」だと思いますが、今回行いたいことも系列の追加でしょうか?
|
6
|
-
|
7
8
|
今回の完成形がイメージできれば回答しやすくなります。
|
1
修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
質問のタイトルには「グラフを重ねたい」とありますが、質問本文からは「X軸・Y軸ともに別の値をとりたい(つまり別のグラフを作成したい)」という風に読み取れます。
|
1
|
+
質問のタイトルには「グラフを重ねたい(系列の追加)」とありますが、質問本文からは「X軸・Y軸ともに別の値をとりたい(つまり別のグラフを作成したい)」という風に読み取れます。
|
2
2
|
|
3
3
|
今回実現したいのはどちらでしょうか?
|
4
4
|
|