- ベストアンサー
Excel 最新から45日分固定でグラフ化
株やFXの表から、ローソク足チャートを作っております 表の項目 日付 高値 安値 始値 終値 そこで 運用としては、日々どこかのサイトからその日のデータを参照して 手書きで追加入力して行きます グラフ化は、最終入力日(最新データ)から45本分のデータを対象にしたい つまり 毎日表が増えて行く過程において、常に45日分のグラフを作成したいわけです マクロは使いたくなく、後に最新データを入力していくだけで 常に最新から遡って45本分のチャートを表示させたいのですが可能でしょうか? 45本固定でなければ、やり方はわかるのですが、45本分固定という大前提があるので困っています
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
NO1です。 勘違いしていましたので修正致します。 毎日に入力されるデータから最新45日分のデータをグラフデータ用としてデータ抽出する方が簡単だと思います。 A~Eにデータ G~K列に45日分のデータ抽出 G2式 =IF(IF(COUNT(A:A)<45,OFFSET(A$2,ROW(A1)-1,),OFFSET(A$2,COUNT(A:A)-46+ROW(A1),))="","",IF(COUNT(A:A)<45,OFFSET(A$2,ROW(A1)-1,),OFFSET(A$2,COUNT(A:A)-46+ROW(A1),))) G2をK2までオートフィル 数式コピーでH~K列データが日付データになるので数値に書式設定 G2~K2下方へオートフィル 添付画像は5日分をG列以降に抽出
その他の回答 (1)
- dogs_cats
- ベストアンサー率38% (278/717)
名前の定義で可能かと思います。 一般的にグラフデータ数が増えた場合に自動でグラフ数を増加させる方法が一般的で最新数の指定の場合はデータ数が45未満の場合はそのデータ数を45に固定出来ないのでif関数で行の移動数やデータ取得数を指定する必要があります。 一般的なデータ数増加だけであればcounta関数又はcount関数で可能なのですが、if関数で判断分岐させる数式が名前の定義には使用出来ないようなのでワークシート上にデータ取得行の移動数、データ取得数の計算式を設ける事とします。 A~E列 株価データ H1:日数指定値(45) H2式:行移動数 =IF(COUNT($A:$A)>$H$1,COUNT($A:$A)-$H$1,0) H3式:データ取得数 =IF(COUNT($A:$A)>$H$1,$H$1,COUNT(A:A)) 名前の定義 日付の数式 =OFFSET(Sheet1!$A$2,Sheet1!$H$2,0,Sheet1!$H$3,1) 高値数式 =OFFSET(Sheet1!$B$2,Sheet1!$H$2,0,Sheet1!$H$3,1) 安値以下sheet1の開始セルが$C$2などに変更するだけです。 グラフの軸ラベルの編集、系列の編集で名前の定義で設定した名前を指定します。 設定方法は下記サイト参照 http://www.ipentec.com/document/document.aspx?page=office-excel-graph-set-auto-range 添付画像は4日分を指定した結果で高値しか設定していません。 4日データでも市場の無い日も表示しますが、日付は文字列で指定するのでしょうか?その場合はH列の数式のcount関数をA列からB列指定に変更して下さい。
お礼
ご返答ありがとうございます COUNT(A:A)は気がつきませんでした 正直ご呈示頂いた数式は、理解に苦しみました OFFSET関数の引数は 基準セル位置、基準からシフトする行数、列数、範囲の行数分、範囲の列数分 という意味ですので、わたしは以下の数式を名前の定義で参照範囲に設定してみました =OFFSET($B$4,COUNT(B:B)-45,,45,1) しかし 大失敗でした、なにもでなくなっちゃいました やはり ご呈示頂いたように、いったん45日分のグラフ化用の表を作って それを単純に参照させてグラフ化させた方が良さそうですね 結果も表でわかりますし ただ、ご呈示頂いた数式には、45コ取ってくると言う部分がないのですが 例では手動で5コ表示させて頂いていますが 自動で45本分の表を作成して欲しい希望です もうどうしたらいいかわからなくなってきました^_^;