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

はじめまして
早速ですが現在、先物取引等で毎日物品の価格数値をEXCELファイルで記録しています。
20品目ぐらい記録しているのですが1つ悩んでいる事があります。
それは日毎の価格変動をグラフで見たいのですがどうしても簡単にいい形でグラフに表示することができませんでした。
以下の通りにグラフに表したいのですがどうしたらよいのでしょうか?

シートA
品名   MIN(\) MAX(\)
ag001 96 100
ag002 102 103
ag003 302 305

シートB
品名   MIN(\) MAX(\)
ag001 97 100
ag002 103 104
ag003 303 305

シートC
品名   MIN(\) MAX(\)
ag001 98 100
ag002 104 105
ag003 305 307

↓↓↓↓↓↓↓↓↓↓↓
これを同ファイル内又は同フォルダ内の別ファイルでグラフag001、グラフag002、グラフag003のように日毎の数値が見られるグラフに分けたい。

宜しくお願いします。

A 回答 (5件)

こういう問題を機動的に行うのは、VBAが適当と思います。


品目別に別シートの、日付順、MIN・MAXの表に再構成すれば良い。
Sub test01()
Dim ws As Worksheet
Set tws = Worksheets("tws") '再編成した一時的な表
For i = 2 To 4 '第2行目から3日分
j = 2 'データは第2行目から開始
For Each ws In Worksheets
If ws.Name <> "tws" Then
tws.Cells(1, "B") = ws.Cells(i, "A")
tws.Cells(j, "A") = ws.Cells(1, "A")
tws.Cells(j, "B") = ws.Cells(i, "B")
tws.Cells(j, "C") = ws.Cells(i, "C")
j = j + 1 '日にちごとに次行に書きに行く
End If
Next
tws.Range("a1:d20").PrintOut 'a1:d20は適当に
Next i
End Sub
簡単のため、3日分の例でやって見ました。
シート3-1(3月1日の積もり。どんな名でも良い)
2004/3/1
a1191
b1292
c1393
シート3-2
2004/3/2
a2181
b2282
c2383
シート3-3
2004/3/3
a3171
b3272
c3373
「必ず日付順にシートを並べておいてください。」
実行すると
a
2004/3/1 11 91
2004/3/2 21 81
2004/3/3 31 71
---
b
2004/3/1 12 92
2004/3/2 22 82
2004/3/3 32 72
----
c
2004/3/1 13 93
2004/3/2 23 83
2004/3/3 33 73
の3枚の紙が印刷されます。これはこれで使い道があると思いますが、上記のtws.Range("a1:d20").PrintOutの前の部分に、グラフを書くマクロの記録を取り、コピーして挟みこんで下さい。
本番ではどこを少し変えれば良いか試行して掴んでください。
    • good
    • 0

ANo.#2です。

補足をありがとうございました。

> 下記のとおりにやりたいのです。
>    シートA (3月1日)
> 品名   MIN(\)  MAX(\)
> ag001   96   100
> ag002   102   103
> ag003   302   305

シートは日ごとに分かれているのですね。ということは最大31枚あるということですね。
品名は固定なのでしょうか。それとも増減があるのでしょうか?
余り関係ないですけれどあまりにも増減が激しければ何か対策を打たなくてはいけないでしょうから。
今回は3銘柄だけという事でお話させていただきます。

とにかく、日ごとに分けられているデータを品名ごとに分けたいというご希望からスタート、ということになります。

まず、グラフの元になるデータを、各シートから集めておくシートを作りましょう。「3月」シートという名前にします。
各シートからセル参照式で値を引っ張って来る手もありますが、処理が重く、数式も複雑になります。
ですから手作業で毎日シート「3月」に転記という進め方でいいでしょうか?

シート「3月」のフォーマットは
A1から右に
空白  ag001MIN ag001MAX 空白 ag002MIN ag002MAX 空白 ag003MIN ag003MAX

A2とD2とG2から下に、その日に入力したデータのみ日付を入れます。
1日
2日
3日
4日
5日
続く・・

グラフの最大参照範囲は
ag001が A1:C32 ←あとで名前をつけて可変にします
ag002が D1:F32 ←あとで名前をつけて可変にします
ag003が G1:I32 ←あとで名前をつけて可変にします

元のデータの縦横が入れ替わり、間に日付が入った形になります。

あとはエクセル技道場の数式の応用なのですが、いかがでしょうか。
これでOKという事で具体的に進められていってまた分かりにくいところがありましたらご質問ください。
    • good
    • 0

作業用シートを別に作り、そこに同じ銘柄のデータを


並べるようにするしかないと思います。

作業用シート上では=Sheet1!A1などと元データが記入されているセルを参照するようにしてください。
下に向かって順番に
=Sheet1!A1
=Sheet2!A1
=Sheet3!A1

=Sheet31!A1
(31日分のシートなのでSheet31まで)

などと記入します。この作業用シートをつくるのが面倒かも知れませんが、一度作ってしまえば、あとは元データのみ書き換えるだけで済みます。

この作業用シートを使ってグラフを描いてください。
    • good
    • 0

ご希望は


1.各シートのデータで作ったグラフを一つのシートに集めたい。
2.データが増えるごとにグラフに自動的にデータを追加したい。
でしょうか。

「エクセル技道場」というサイトに「可変範囲のグラフ」があります。
このページの要領で、一つ一つのデータ範囲(表)に名前をつけ、
それを元にグラフを描かれてはいかがでしょうか。

データは高値と安値しかないのでしょうか。
始値、高値、安値、終値の4つが揃えばローソクチャートが描けます。
http://www.datamining.jp/jirei/j005_1.htm

高値、安値しかないのでしたら、折れ線グラフはいかがでしょうか。
私も補足をお願いいたします。

この回答への補足

回答ありがとうございます。
1,2の希望通りにしたいのですがいまいちできませんでした。

補足します。
「エクセル技道場」ローソクチャートでは同じシート内で日毎のデータが入力されていますが私がしたいのは、

(1)日毎(例えば3月1日)に各品名データを入力する。
(2)高値、安値のみ
(3)各1品目のみの高値、低値の折れ線グラフの表示

補足日時:2004/03/06 18:40
    • good
    • 0

横軸に日、縦軸に金額をとって


MIN、MAXごとに折れ線グラフでいいと思いますが。

いまいち、ご要望がわかりません。
補足お願い致します。

この回答への補足

回答ありがとうございます。
補足します。

下記のとおりにやりたいのです。
シートA (3月1日)
品名   MIN(\) MAX(\)
ag001    96   100
ag002    102 103
ag003 302 305

シートB (3月2日)
品名   MIN(\) MAX(\)
ag001 97 100
ag002 103 104
ag003 303 305

シートC (3月3日)
品名   MIN(\) MAX(\)
ag001 98 100
ag002 104 105
ag003 305 307
→これを日毎にシートに書込み保存。(3月分ファイルに)
月末後にグラフにまとめるのだが横軸に日、縦軸に金額をとってMIN、MAXを記入するととても面倒臭い。

シート内の日毎の各品名記録を同ファイル内に各品のグラフ(たとえばag001品グラフ<3月1日~31日までの>、ag002品グラフ・・)というように作りたい。

わからなければまた補足します。

補足日時:2004/03/06 18:22
    • good
    • 0

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