複数のグラフを整列させて表示する方法
現在、複数のグラフを作成するマクロを作っています(ちなみに、今日はじめてマクロを用いたグラフ作成に取り組みました)。
それぞれの行に13個のデータが入っていて(平均値と標準偏差がそれぞれ入っている)、それを用いて行ごとにグラフを作成します。
データが格納されている行はだいたい300個くらいなのですが、今のままだと300のグラフがすべて重ねられた状態で出てきます。
これを整列した状態で表示させたいのですが、どのようにすればよいのでしょうか?
あと、今回はほとんど「マクロの記録」で作ったので、なんかソースが汚ないのでもう少し綺麗にならないでしょうか?
下にソースをのせておきます。よろしくお願いします。
Sub Macro6()
'
' Macro6 Macro
'
'
Dim x As Long
Cells(1, 1).Select
x = Range(Selection, Selection.End(xlDown)).Rows.Count
For i = 2 To x
Range(Cells(i, 2), Cells(i, 14)).Select 'これがないと棒どうしが密着したグラフになる。
ActiveSheet.Shapes.AddChart.Select
'データの範囲を指定
ActiveChart.SetSourceData Source:=Range(Cells(i, 2), Cells(i, 14))
'エラーバーをつける
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SeriesCollection(1).HasErrorBars = True
ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range(Cells(i, 15), Cells(i, 27)), MinusValues:=Range(Cells(i, 15), Cells(i, 27))
'Legendを消す
ActiveChart.Legend.Select
Selection.Delete
'タイトルや軸ラベルの名前を変更する
ActiveChart.SetElement (msoElementChartTitleAboveChart)
ActiveChart.ChartTitle.Text = Cells(i, 1)
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Text = "Class"
ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Font.Size = 14
ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated)
ActiveChart.Axes(xlValue, xlPrimary).axistitle.Text = "Intensity"
ActiveChart.Axes(xlValue, xlPrimary).axistitle.Font.Size = 14
Next i
End Sub
お礼
ありがとうございます。2007以外では実行可能でした。 ただ、2007では「赤」「標準」でないと通らず、 バージョンによってわけるといった少し格好の悪い形に するしかないかな・・・と思ってます。 後0のつく数値の場合3桁になってしまうのです・・・ 20→220 といった感じで・・・ これもきっとバグでしょうね (私の書き方が悪いのかも・・・) マイクロソフトサポートのサイトは見てはいたのですが、 赤がredになるところまでは予想できませんでした。 助かりました。ありがとうございました。<m(__)m>