• 締切済み

株の出来高ランキングをリアルタイムで降順で表示し続ける法

L列に出来高を出します。 この出来高を大きい順番にリアルタイムで表示させ続けるにはどうしたらいいでしょうか? 初心者のため降順並び替えをマクロで設定すればリアルタイムで動くものだと勘違いしていました。(一回一回手動でマクロを実行させなければならず実用になりませんでした。) 株式市場は9:00~15:00迄なのでその間リアルタイムで計算させ表示させ続けます。 (現状は株式データはリアルタイムで入って来るので株価、出来高は目まぐるしく動きます。 よって、あと出来高を大きい順に並び替えられればいいのですが。 やり方が分かりません。) マクロVBAの本を読むとどうもVBEを使って追加の命令を加えるような気がするんですが。 ((DO LOOP (WHILE)等の例文を集めてみましたが、どれも計算させて答えを出させる命令ばかりでした。並び替えを継続させるような例文は発見出来ませんでした。)) EXCELに詳しい方、出来高をリアルタイムで大きい順番に並び替え続けさせる方法をお教えください。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

例データ (Sheet1) A1:B12 銘柄  出来高 順位1  順位2 a 1323 61 6 b 342 101 10 c 6345 11 1 d 5423 21 2 e 1323 62 7 f 2346 31 3 g 2134 41 4 h 222 111 11 i 875 91 9 j 1678 51 5 k 954 81 8 空き列のC,D列2列を作業列として使う。 C2には =RANK(B2,B:B)*10+COUNTIF($B$2:B2,B2) D2には =RANK(C2,C:C,1) 2列使うのは同じ出来高がありうることを考慮している。 9銘柄以上は同じにならないものとする。99銘柄にも拡張できるが。=RANK(C2,C:C,1)の第3引数の1は降順を区別するもの。 結果は上記C,D列の通り。 (Sheet2) Sheet2に行って A2は =INDEX(Sheet1!$A$2:$B$100,MATCH(ROW()-1,Sheet1!$D$2:$D$100,0),1) B2は =INDEX(Sheet1!$A$2:$B$100,MATCH(ROW()-1,Sheet1!$D$2:$D$100,0),2) と入れて、A2:B2をA12:B12まで式を複写する。 結果 A2:B12 c 6345 d 5423 f 2346 g 2134 j 1678 a 1323 e 1323 k 954 i 875 b 342 h 222 他に列数が多いときはIndex関数の最後の引数を Column()に変えて、横方向に+ハンドルを引っ張る手もある。 (imogasi方式) Sheet1の、出来高を変えていただければ、直ちにSheet2の表に反映するはず。 ●マクロVBAの本を読むとどうもVBEを使って追加の命令を加えるような気がするんですが。((DO LOOP (WHILE)等の例文を ・・ そんなんじゃなくて、イベントプロシージュアーというものを使わないといけないでしょう。SheetのChangeイベントを調べましょう。

  • EL-SUR
  • ベストアンサー率76% (83/108)
回答No.1

表示させたい列の先頭のセルに =LARGE(L:L,ROW(A1)) と入力して、下にコピーではダメでしょうか?