• ベストアンサー

Excel VBAで多数のチャートを作りたい

Sheet1に複数のデータを縦に入れてます(Column Aの1から10に一種類のデータ、Column Bの1から10に別のデータ、といった具合です)。表にしたいデータの数が多くて、Column AからUまであります。のこれらAからUまでのデータを別々のチャートにしてSheet2に出したいです。以下のコードを書きましたが、元になるデータの参照部分を、sousu(1) = "A1:A10" のように書くと延々とUまで書かなくてはいけないので、ここも何とかループに組み込んで処理したいです。 何かいい方法ありませんか?  Dim sousu(6) As String Dim i As Integer Dim name As String sousu(1) = "A1:A10" sousu(2) = "B1:B10" sousu(3) = "C1:C10" sousu(4) = "D1:D10" sousu(5) = "E1:E10" sousu(6) = "F1:F10" For i = 1 To 5 Set ch = ActiveSheet.ChartObjects.Add(10, 5 + i * 105, 500, 100) ch.Chart.ChartType = xlColumnClustered ch.Chart.SetSourceData Source:=Sheets("Sheet1").Range(sousu(i)), PlotBy:=xlColumns ch.Chart.Location where:=xlLocationAsObject, name:="Sheet2" Next i

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 細かい部分は見ていませんが、以下のように配列を作ります。 Dim Sousu() As String, a As String Dim i As Integer, j As Integer Dim Name As String ' ReDim Sousu(1 To 21) For j = 1 To 21 '文字作成  a = Chr(64 + (j - 1) Mod 26 + 1)  Sousu(j) = a & "1:" & a & "10" Next Application.ScreenUpdating = False 'グラフ作成 For i = 1 To 21 With ActiveSheet.ChartObjects.Add(10, 5 + i * 105, 500, 100).Chart  .ChartType = xlColumnClustered  .SetSourceData Source:=Sheets("Sheet1").Range(Sousu(i)), PlotBy:=xlColumns  .Location where:=xlLocationAsObject, Name:="Sheet2" End With Application.ScreenUpdating = True Next i

shingoogoo
質問者

お礼

Chrを使ってアルファベットのところを数字で管理する方法ですね。 すごいです。 これならZまでもいけそうです。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

Sub test01() x = Array("a1:a4", "b1:b4", "c1:C4") For i = 0 To UBound(x) Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=Worksheets("sheet1").Range(x(i)), PlotBy:= _ xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" ActiveSheet.Shapes(i + 1).IncrementLeft 300 * i Next i End Sub を参考に改良してみてください。

shingoogoo
質問者

お礼

動きました。 有難う御座いました。

関連するQ&A

専門家に質問してみよう