アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

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

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

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

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

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


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


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

A 回答 (3件)

50個のグラフならば50個のグラフをひとつのシートに


というマクロにするということは可能でしょうか?に関して

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

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

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

http://excel.onushi.com/purpose/graph_specificat …
    • good
    • 0

こんにちは、



****************引用**************************
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
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2006/09/01 00:06

こんにちは、



こんな感じで、良いのかな?

シート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

この回答への補足

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

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

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

補足日時:2006/08/27 23:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!