• 締切済み

EXCELマクロで順番にグラフをつくるには?

エクセルマクロ・VBA初心者です。 現在、グラフ作成で困ってます。 お詳しい方、よければアドバイスを下さい! 作成したいグラフは、元データが5000行×50列で、 1番左列に時刻、2列目からデータとなっており、 1-2列、1-3列、1-4列、・・・・1-50列 という感じの一般的な時系列グラフを多量につくりたいのです。 これをマクロを使って、別シートにグラフ(散布図)を並べて作るというものです。 さらに、別に用意したグラフの名称を並べたセルから、 順に、上記グラフのタイトルとして入力していきたいのです。 これをVBAを使って行いたいのですが、 一体どうすればいいのでしょうか? 「マクロの記録」では、 ■「50列目まで順番にグラフをつくれ!」 ■「名前を順番に入れていけ!」 という命令が私には作れません。 お詳しい方、ご返答宜しくお願い致します。

みんなの回答

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.3

50個のグラフならば50個のグラフをひとつのシートに というマクロにするということは可能でしょうか?に関して ここで、エクセルの仕様で制限があります。 50個のグラフをひとつのシートに・・・は、実現不可能でしょうね。 ANo.2さんが、言っているように 内容によるけど 10個のグラフをひとつのシートに・・・も無理な場合がありますので、手動でグラフを作成して確認する必要あります。 詳細は、下記URLを参考に http://excel.onushi.com/purpose/graph_specifications.htm

  • tom11
  • ベストアンサー率53% (134/251)
回答No.2

こんにちは、 ****************引用************************** 10個のグラフならば10個のグラフをひとつのシートに、 50個のグラフならば50個のグラフをひとつのシートに というマクロにするということは可能でしょうか? ********************************************** 言っている事が、今ひとつわかりませんが、 hinekichiさんが、必要としているグラフは、 マクロを使わないで、10個のグラフを一つのシートに というのが、可能ですか。??? マクロは、あくまでも、自動化で、 手作業でも、できないことは、できないと思います。 外しているかもしれませんが、 グラフの配置場所を変えて、 シート1に2個のグラフを作りました。 グラフの作成場所を変えただけですが、 Dim area As Range 'グラフの数 Dim i As Integer '行の最大値 Dim r As Integer 'データのタイトル Dim title As String '行の最大値、今回は、11行にしました r = 11 For i = 1 To 2 'データが存在するシート名 With Sheets("Sheet1") 'データのタイトル title = .Cells(1, i + 1).Value Set area = Union(Range(.Cells(1, 1), .Cells(r, 1)), Range(.Cells(1, i + 1), .Cells(r, i + 1))) End With Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=area, PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1" With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = title .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With Next

hinekichi
質問者

お礼

度重なるご回答、ありがとうございます! >言っている事が、今ひとつわかりませんが、 についてですが、これは例を2通り出しただけで深い意味はありません。 ひとつのシート内に多量のグラフをつくる、ということです。 出来ればこれをきれいに整列させたい所ですが・・・。 これをベースに、勉強させて頂きます。 マクロは奥が深いですね、本当にありがとうございました!

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、 こんな感じで、良いのかな? シート1に x-------data1---data2 1-------10------20 2-------20------30 3-------30------40 4-------40------50 5-------50------60 6-------60------70 7-------70------80 8-------80------90 9-------90------100 10------100-----110 のようなデータを作り、X-DATA1とX-DATA2の散布図を二つ作りました。 Sub Macro1() Dim area As Range 'グラフの数 Dim i As Integer '行の最大値 Dim r As Integer 'データのタイトル Dim title As String '行の最大値、今回は、11行にしました r = 11 For i = 1 To 2 'データが存在するシート名 Sheets("Sheet1").Select 'データのタイトル title = Cells(1, i + 1).Value Set area = Union(Range(Cells(1, 1), Cells(r, 1)), Range(Cells(1, i + 1), Cells(r, i + 1))) Charts.Add ActiveChart.ChartType = xlXYScatterSmooth ActiveChart.SetSourceData Source:=area, PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart .HasTitle = True .ChartTitle.Characters.Text = title .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False .Name = title End With Next End Sub

hinekichi
質問者

補足

具体的なご回答、本当にありがとうございます! 先ほど試してみました。 わがままを言って申し訳ないのですが、 作成したグラフ(tom11様の場合ですと10個)を、 ひとつひとつのシートにではなく、 10個のグラフならば10個のグラフをひとつのシートに、 50個のグラフならば50個のグラフをひとつのシートに というマクロにするということは可能でしょうか? 説明不足で申し訳ありませんでした。 出来れば、再度具体的にVBAのプログラムを教えて頂けませんか? 他力本願で申し訳ありません。 自分で勉強して応用出来るようがんばりますので、 何卒宜しくお願い致します。

関連するQ&A