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

L列に出来高を出します。
この出来高を大きい順番にリアルタイムで表示させ続けるにはどうしたらいいでしょうか?

初心者のため降順並び替えをマクロで設定すればリアルタイムで動くものだと勘違いしていました。(一回一回手動でマクロを実行させなければならず実用になりませんでした。)

株式市場は9:00~15:00迄なのでその間リアルタイムで計算させ表示させ続けます。
(現状は株式データはリアルタイムで入って来るので株価、出来高は目まぐるしく動きます。

よって、あと出来高を大きい順に並び替えられればいいのですが。
やり方が分かりません。)

マクロVBAの本を読むとどうもVBEを使って追加の命令を加えるような気がするんですが。
((DO LOOP (WHILE)等の例文を集めてみましたが、どれも計算させて答えを出させる命令ばかりでした。並び替えを継続させるような例文は発見出来ませんでした。))

EXCELに詳しい方、出来高をリアルタイムで大きい順番に並び替え続けさせる方法をお教えください。

A 回答 (2件)

例データ


(Sheet1)
A1:B12
銘柄  出来高 順位1  順位2
a1323616
b34210110
c6345111
d5423212
e1323627
f2346313
g2134414
h22211111
i875919
j1678515
k954818
空き列の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
c6345
d5423
f2346
g2134
j1678
a1323
e1323
k954
i875
b342
h222
他に列数が多いときはIndex関数の最後の引数を
Column()に変えて、横方向に+ハンドルを引っ張る手もある。
(imogasi方式)
Sheet1の、出来高を変えていただければ、直ちにSheet2の表に反映するはず。
●マクロVBAの本を読むとどうもVBEを使って追加の命令を加えるような気がするんですが。((DO LOOP (WHILE)等の例文を
・・
そんなんじゃなくて、イベントプロシージュアーというものを使わないといけないでしょう。SheetのChangeイベントを調べましょう。
    • good
    • 0

表示させたい列の先頭のセルに


=LARGE(L:L,ROW(A1))

と入力して、下にコピーではダメでしょうか?
    • good
    • 0

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