• ベストアンサー

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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/17068)
回答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

  • エクセルのマクロについて

    エクセルのマクロで、条件に合わせて、グラフを作る範囲を決めることは可能ですか? たとえば、X=1、2、3、4、5 Y=1、23、34、56、4の場合、Yが10より上の時の範囲だけグラフを作るみたいなことは可能ですか? マクロは初心者なので、できれば分かりやすいサイトなども教えていただけるとありがたいです。

  • エクセルでグラフを!!

    エクセルでy=x^2とかy=10^xなどの関数グラフを書きたいのですが、どのようにすればよいのでしょうか? 一定間隔で値をセルに入力してグラフにする方法ではなく、スマートに作りたいです。ひょっとしてマクロで作るしかないんですかね?

  • エクセルマクロでのグラフ作成について

    エクセルのマクロでグラフを作成したいのですが 設定したい値のセルが行も列も飛び飛びなんです。このような場合、どうやってセルを設定すればいいか教えてください。 セルの自動マクロ記録でやってみると、例えばですが ActiveChart.SetSourceData Source:=Sheets("グラフ").Range( _ "A5,A10,A15,A20,A25,A30,A35,D5,D10,D15,D20,D25,D30,D35"), PlotBy:= xlColumns このような設定で希望通りのグラフが出来上がります。 A列(X軸)とD列(Y軸)の値で、列は固定で数行置きのデータでのグラフが作りたいのです。 しかもどの行かは固定ではありませんので、セルアドレスをそのまま入力するのではなく、Cells(,) で設定したいのですが、Unionを使ってみたり、色々試したのですが、うまくできません。 おわかりの方教えて頂けませんでしょうか。 よろしくお願いいたします。

  • Excel VBAでのグラフ

    エクセルのVBAを用いてプログラムを書いているのですが、どうしてもわからないことがあるので教えて下さい。 あるデータの時間経過(推移)の折れ線グラフを自動的にチャートシートに作図させたのですが、X軸に日付の目盛りを表示させ忘れてしまい、X軸に日付の目盛りを表示させるようにマクロを記録し、それを基に手直しをして追加プログラムを書いているのですがうまく行きません。というのは、X軸に日付の目盛りを表示させることはできたのですが、それに伴い、チャートの形が変わってしまうのです。グラフの種類は折れ線でサインカーブの様なスムーズな線が角張ったゴツゴツした感じの線になってしまいます。これってバグでしょうか? 具体的なプログラムは、Range(cells(50, 2), cells(150, 5))のデータでグラフを作成し、その後、Range(cells(50, 1), cells(150,1))の日付データをX軸に設定するといった感じで組んでいます。グラフの表示形式を変えずに、X軸の目盛りラベルのみを変更(表示)させるにはどのようにすれば良いでしょうか

  • エクセル2003マクロ

    お世話になります。 エクセル2003のマクロで、 ある範囲(たとえば、Cells(1,1)~Cells(1,10)の中の最小値のセルの(値でなく)アドレスを拾う方法を教えてください。

  • グラフマクロで系列を変数にする方法を教えてください

    エクセルのグラフマクロについて質問します。 系列のxの値(Yの値も)の設定で、 グラフ化したいワークシートと範囲を変数にすることはできますか? 目的は、複数あるシートの複数のセルをグラフ化したい、というものです。 変数にてシート名と範囲を指定したいです。 ↓のようなプログラムを作成してみましたが、どうもうまく動きません。 12行目で止まってしまいます。 13行目はでたらめですが、範囲も変数bにできないかなぁと、勝手にイメージで作ってみました。 Sub () n = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To n Sheets("SHEET1").Select Range("A" & i).Select a = ActiveCell.Value Sheets(a).Select Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets(a).Range("V22") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=sheets(a)!R2C4:R5C4" ActiveChart.SeriesCollection(1).Values = "=sheets(a)!range(b)" ActiveChart.Location Where:=xlLocationAsObject, Name:=Sheets(a) Next i End Sub 当方、マクロかじりたての初心者です。 どなたか、よろしくおねがいします!

  • エクセルのマクロ

    Sub test() x = Selection.Row y = Selection.Column z = Selection.Columns.count Range(Cells(x, y), Cells(x, y + z - 2)).Select Selection.ClearContents End Sub 上記マクロは、同一行の連続するセルを二つ以上選択状態にして実行すると、範囲内の最も右にあるセルの値のみが残って他のセルの値は全て消去されます。 上記マクロを、複数のセレクションに対して対応できるようにするには、どうすればいいでしょうか? 例えば、c1~f1、d3~h3、e10~g10を選択して実行すると、f1とh3とg10の値のみ残って他の値は消えるということです。

  • エクセルのグラフで・・・

    エクセル2000で2時曲線を書いたのですが、このグラフで、任意のY切片に対するXの値を知りたいのですが、どうやったら求めることが出来るでしょうか? 等間隔の目盛りは出せるんですが、いざ値をとなると出せませんでした。 どなたかご存知のかたよろしくお願いします。

  • エクセルのグラフ(y=x^2)

    エクセルでy=x^2のグラフを書こうと思いました。 そこで、まず、a1に「x」を書き、a2を「-30」, a3を「-29」と順番にいれていき、a62で「30」というふうに数字を入れていきました。そしてB列のb1に「y=x^2」として、b2以降、yの値を入れていきました。つまりb2が900、b3が841という具合に。 そのあと、a1~a62およびb1~b62を範囲指定して、グラフのツールボックスをクリックして、「折れ線」の一番左の真ん中をクリックしてグラフを作りました。 そしたらyの値は思ったとおり弧を描いたのですが、xの値は軸を縦(yと同じ)に取っているらしく、斜めになってしまいます。 質問なんですが、x軸を横軸にとるにはどうしたらいいのですか? ちなみにオフィスXPについているエクセルです。もちろんOSもXP。

  • エクセルのグラフで値を求める方法

    エクセルで折れ線グラフを作成しました。その折れ線グラフの中で、yの値が50のときxの値を出すにはどうしたらよいのでしょうか?

専門家に質問してみよう