- 締切済み
EXCELで日毎の価格変動をグラフで見たいのですが・・
はじめまして 早速ですが現在、先物取引等で毎日物品の価格数値を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のように日毎の数値が見られるグラフに分けたい。 宜しくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
こういう問題を機動的に行うのは、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 a 11 91 b 12 92 c 13 93 シート3-2 2004/3/2 a 21 81 b 22 82 c 23 83 シート3-3 2004/3/3 a 31 71 b 32 72 c 33 73 「必ず日付順にシートを並べておいてください。」 実行すると 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の前の部分に、グラフを書くマクロの記録を取り、コピーして挟みこんで下さい。 本番ではどこを少し変えれば良いか試行して掴んでください。
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という事で具体的に進められていってまた分かりにくいところがありましたらご質問ください。
- 0shiete
- ベストアンサー率30% (148/492)
作業用シートを別に作り、そこに同じ銘柄のデータを 並べるようにするしかないと思います。 作業用シート上では=Sheet1!A1などと元データが記入されているセルを参照するようにしてください。 下に向かって順番に =Sheet1!A1 =Sheet2!A1 =Sheet3!A1 … =Sheet31!A1 (31日分のシートなのでSheet31まで) などと記入します。この作業用シートをつくるのが面倒かも知れませんが、一度作ってしまえば、あとは元データのみ書き換えるだけで済みます。 この作業用シートを使ってグラフを描いてください。
ご希望は 1.各シートのデータで作ったグラフを一つのシートに集めたい。 2.データが増えるごとにグラフに自動的にデータを追加したい。 でしょうか。 「エクセル技道場」というサイトに「可変範囲のグラフ」があります。 このページの要領で、一つ一つのデータ範囲(表)に名前をつけ、 それを元にグラフを描かれてはいかがでしょうか。 データは高値と安値しかないのでしょうか。 始値、高値、安値、終値の4つが揃えばローソクチャートが描けます。 http://www.datamining.jp/jirei/j005_1.htm 高値、安値しかないのでしたら、折れ線グラフはいかがでしょうか。 私も補足をお願いいたします。
- 0shiete
- ベストアンサー率30% (148/492)
横軸に日、縦軸に金額をとって 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品グラフ・・)というように作りたい。 わからなければまた補足します。
補足
回答ありがとうございます。 1,2の希望通りにしたいのですがいまいちできませんでした。 補足します。 「エクセル技道場」ローソクチャートでは同じシート内で日毎のデータが入力されていますが私がしたいのは、 (1)日毎(例えば3月1日)に各品名データを入力する。 (2)高値、安値のみ (3)各1品目のみの高値、低値の折れ線グラフの表示