こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

エクセルマクロ・VBA初心者です。

現在、グラフ作成で困ってます。
お詳しい方、よければアドバイスを下さい!

作成したいグラフは、元データが5000行×50列で、
1番左列に時刻、2列目からデータとなっており、
1-2列、1-3列、1-4列、・・・・1-50列
という感じの一般的な時系列グラフを多量につくりたいのです。

これをマクロを使って、別シートにグラフ(散布図)を並べて作るというものです。

さらに、別に用意したグラフの名称を並べたセルから、
順に、上記グラフのタイトルとして入力していきたいのです。

これをVBAを使って行いたいのですが、
一体どうすればいいのでしょうか?


「マクロの記録」では、
■「50列目まで順番にグラフをつくれ!」
■「名前を順番に入れていけ!」
という命令が私には作れません。


お詳しい方、ご返答宜しくお願い致します。

投稿日時 - 2006-08-25 14:29:38

QNo.2361540

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

50個のグラフならば50個のグラフをひとつのシートに
というマクロにするということは可能でしょうか?に関して

ここで、エクセルの仕様で制限があります。
50個のグラフをひとつのシートに・・・は、実現不可能でしょうね。

ANo.2さんが、言っているように

内容によるけど 10個のグラフをひとつのシートに・・・も無理な場合がありますので、手動でグラフを作成して確認する必要あります。
詳細は、下記URLを参考に

http://excel.onushi.com/purpose/graph_specifications.htm

投稿日時 - 2007-02-10 21:26:00

ANo.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

投稿日時 - 2006-08-28 08:12:52

お礼

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

これをベースに、勉強させて頂きます。
マクロは奥が深いですね、本当にありがとうございました!

投稿日時 - 2006-09-01 00:06:12

ANo.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

投稿日時 - 2006-08-26 09:08:17

補足

具体的なご回答、本当にありがとうございます!
先ほど試してみました。
わがままを言って申し訳ないのですが、
作成したグラフ(tom11様の場合ですと10個)を、
ひとつひとつのシートにではなく、
10個のグラフならば10個のグラフをひとつのシートに、
50個のグラフならば50個のグラフをひとつのシートに
というマクロにするということは可能でしょうか?

説明不足で申し訳ありませんでした。
出来れば、再度具体的にVBAのプログラムを教えて頂けませんか?

他力本願で申し訳ありません。
自分で勉強して応用出来るようがんばりますので、
何卒宜しくお願い致します。

投稿日時 - 2006-08-27 23:18:09

あなたにオススメの質問