|
>この表を以下のような条件でグラフ化したいと思っているのですが、
>方法がわかりませんでした。
マクロ化する でよろしいでしょうか?
(例)
1月 2月 3月 4月 5月
A 21 5 11 17 6
B 3 14 45 0 5
C 4 5 4 5 15
D 3 9 7 4 3
E 5 45 9 14 18
F 4 4 10 3 21
G 1 5 4 6 20
H 21 2 45 5 2
Z
行は、1月から5月まで
列は、AからZまでと仮定して、
10列単位にグラフを作成するコードです。
----------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim I As Long
Dim WK_Chats As String
Dim Count As Long
Dim WK_EOF As String
Dim 開始 As Long
開始 = 2
Conut = 0
WK_EOF = "False"
WK_Chats = "off"
'
Application.ScreenUpdating = False
For I = 2 To 65536 - 1 Step 1
If IsNull(Range("B" & I)) Or Range("B" & I) = "" Then
If 開始 = I Then
Exit For
End If
WK_Chats = "on"
WK_EOF = "True"
Else
'1行づつカウントしつつ、10になったら、グラフフラグをONにする
Count = Count + 1
If Count Mod 10 = 0 Then
WK_Chats = "on"
End If
End If
'
If WK_Chats = "on" Then
'グラフの作成
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet5").Range("K9")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Sheet5!R" & 開始 & "C1:R" & I & "C1"
ActiveChart.SeriesCollection(1).Values = "=Sheet5!R" & 開始 & "C2:R" & I & "C2"
ActiveChart.SeriesCollection(1).Name = "=Sheet5!R1C2"
ActiveChart.SeriesCollection(2).Values = "=Sheet5!R" & 開始 & "C3:R" & I & "C3"
ActiveChart.SeriesCollection(2).Name = "=Sheet5!R1C3"
ActiveChart.SeriesCollection(3).Values = "=Sheet5!R" & 開始 & "C4:R" & I & "C4"
ActiveChart.SeriesCollection(3).Name = "=Sheet5!R1C4"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet5"
'
If WK_EOF = "True" Then
Exit For
End If
WK_Chats = "off"
開始 = I + 1
End If
Next I
Application.ScreenUpdating = True
End Sub
'----------------------------------------------------------------------
もうチョット簡単に出来そーな気がするんですけど・・・。
このままだと、グラフが重なり合って作成されるため、
位置の調整や大きさ、などなどの処理が必要になってくるかと思います。
こんな感じですけど、参考になればと思います。
|
|