• ベストアンサー

エクセルのマクロでグラフを作る方法

 エクセルのマクロでプログラムを組んでグラフを作るときXの値の範囲とYの値の範囲をそれぞれ指定する形でマクロをつくりたいのですがなかなかうまく行きません。  また、大量のグラフを一気に作りたいのでcells()を使って作りたいのですが、どなたかご存知でしたら教えてください。

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

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

#1の者です。 #1の補足に対して,「***」を付けた行を追加・変更しました。約束事として、「データ範囲=」の問いに対し、「A1」セルだけ範囲指定して答えると終了となります。 Sub test01() Dim ar As Range For i = 1 To 100 '*** Set ar = Application.InputBox("データ範囲=", Type:=8, Left:=300) If ar.Address = "$A$1" Then Exit Sub '*** Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=ar, PlotBy:= _ xlColumns gn = InputBox("グラフシート名=") ActiveChart.Location Where:=xlLocationAsNewSheet, _ Name:=gn '*** With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With Next i '*** End Sub

garden2001
質問者

補足

返答ありがとうございます。 また2つ質問があります。 今回は繰り返し処理で多数のグラフを作ることができますがやはりデータの範囲は手打ちにしなければいけませんか?例えば、エクセルのシートでXの値の範囲を一番上の行に置き、Yの値の行が多数あるとしてマクロでYの値の行を自動的に参照していき多数のグラフを参照することはできますか? ar.Address = "$A$1" でも範囲指定を行うことはできますか。これでX,Yの値の複数範囲を指定して、なおかつ "$A$1"  を変数でもあらわすことはできますか(繰り返し処理したいので...) 以上 ご対応願います。

その他の回答 (1)

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

問題の意図を汲み取れたと思わないのですが、取りあえず 捨石的に第1陣解答。目的と違う点を乞う補足。 (データ)A1:E7に A   B    C    D    E a 2 4 5 1 b 3 5 7 2 c 8 6 3 1 d 5 7 5 3 r 10 3 7 4 f 7 6 8 4 g 8 7 9 6 とあるとして、 (コード) Sub test01() Dim ar As Range Set ar = Application.InputBox("データ範囲=", Type:=8, Left:=300) Charts.Add ActiveChart.ChartType = xlColumnClustered ActiveChart.SetSourceData Source:=ar, PlotBy:= _ xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With End Sub 実行すると、グラフにする範囲を聞いてきますから、 (1)A1:C7とか (2)CTRLキーを押しながら、A1:A7とD1:E7を指定したりする。 それでOKをクリック。 (1)は系列1がBと系列2がCとなり、X軸にはA列が表示される。 (2)は系列1がDと系列2がEとなり、X軸にはA列が表示される。 取りあえずA、BとかC,Dとか2列を指定してますが 3つ以上の系列でも出来ると思います。 さてご質問はこれとどう違いますか?。 沢山グラフを描くなら、グラフシートに書くべきだったですね。

garden2001
質問者

補足

回答ありがとうございます。 前記の回答から、さらに質問します。ひとつのグラフシートにひとつのグラフをつくりたいので、前記の方法では毎回、手打ちでやらなければいけません。グラフにしたい範囲を指定して、一組のデータをグラフにしてそれを自動的に繰り返して複数のグラフを作りたいのですが.... 例 Set ar = Application.InputBox("データ範囲=", Type:=8, Left:=300) のデータ範囲をCells()で指定して()内を変数で指定して繰り返し処理でグラフをどんどん作っていきたいのですが。

関連するQ&A