[[20031119150608]] 『ランキングの自動更新について』(Taka) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ランキングの自動更新について』(Taka)

Cの列のセルにランダムに数字を更新していって、それに伴い、Aの列の順位表示を自動更新するには、どうすればいいのでしょうか?

宜しくお願いします。


 A1に=IF(C1="","",RANK(C1,C:C))としてA65536までコピーです。
意味が違いましたらゴメンなさい。(ケン)

 出来ました。
ありがとうございました。

 並列条件として、Dの列の数字(Dの列にもランダムに数字が入力されているとします)を参照して、
ある一定の数字(例として30とします)以上を有効数字とし、
それに該当するものに対して順位を付けるにはどうすればいいのでしょうか?
また、有効数字に該当しないものに関しても、連番として順位を付けたいのですが、
どういった数式を入力すればいいのでしょうか?
分かりづらい質問で申し訳ありませんが、情報を提供して下さい。

宜しくお願いします。


 作業列を使う方法でも良いですか?
E1に=IF(D1>=30,D1,"")としてE65536までコピーしE列をRANK関数で順位を求めます。
>また、有効数字に該当しないものに関しても、連番として順位を付けたいのですが
D列を普通にRANK関数で順位を求めるでは違うのですか?いまいち理解出来ていません。
またまた、意味が違いましたらゴメンなさい。(ケン)

 横から失礼します。Yosh!です。

 D列が30以上の行はA列によってランクを付け、30未満の行はランク付けされた数から
後に(ランクが10位まで付けられていたら11番から)連番で、上の行から付番していくと
いう事だと考えました。
・データが20行あるとして、ランク表示欄の1行目に

=IF(D1>=30,SUMPRODUCT(($D$1:$D$20>=30)*($A$1:$A$20>A1))+1,COUNTIF($D$1:$D$20,">=30")+COUNTIF($D$1:D1,"<30"))

  として、20行目までコピー。

 意味違っていますか? (Yosh!)

 意味が違っている気がしてきました^^;
D列が30以上の行を優先的にランクの上位に持ってきたいという事かもしれませんね。
その場合なら、この式でどうでしょうか?

=IF(D1>=30,SUMPRODUCT(($D$1:$D$20>=30)*($A$1:$A$20>A1))+1,SUMPRODUCT(($D$1:$D$20<30)*($A$1:$A$20>A1))+1+COUNTIF($D$1:$D$20,">=30"))

 (Yosh!)

 無事に出来ました。
ほんとに分かりづらい質問となってしまいすいませんでした。

みなさん、ありがとうございました。


 A1に=IF(C1="","",RANK(C1,C:C))と
=IF(D1>=30,SUMPRODUCT(($D$1:$D$20>=30)*($A$1:$A$20>A1))+1,SUMPRODUCT(($D$1:$D$20<30)*($A$1:$A$20>A1))+1+COUNTIF($D$1:$D$20,">=30"))
の両方兼ね備えた数式を入力したいのですが、どうすればいいのでしょうか?
また、並列条件として2つの式を入力できるのであれば、それも教えてください。

度々すいませんが、宜しくお願いします。


 A列の値でランク付けじゃなくて、C列の値でA列にランク表示でしたね。 大ボケでした > σ(^^;

=IF(C1="","",IF(D1>=30,SUMPRODUCT(($D$1:$D$20>=30)*($C$1:$C$20>C1))+1,SUMPRODUCT(($D$1:$D$20<30)*($C$1:$C$20>C1))+1+SUMPRODUCT(($D$1:$D$20>=30)*($C$1:$C$20<>""))))

 A1に上記式を入力して、A20までコピーでどうでしょうか?(Yosh!)

 出来ました!
ですが、A列のランキングの数値が変更になるだけで、ソートまでされません。
この数式って、並べ替えまでは出来ないのでしょうか?
もし、並べ替えまでも出来るような数式をご存知でしたら、教えてください。

宜しくお願いします。


 並べ替えが出来ないというのは、データの並べ替えの事ですか?
表の範囲がA1〜D20だとして、
・A1〜D20を選択
・「データ」−「並べ替え」
・[最優先されるキー]を[列 A]としてOK
これで出来ると思うのですが、この方法だと問題がありますでしょうか?(Yosh!)

 そうでした。
手動でもすぐに出来ますね。
ありがとうございました。

この教えて頂いた数式って、C列の数字が大きい順に、A列のランク付けがされるんですよね。
逆に、C列の数字の小さい順に、A列のランク付けをするには、どういった数式にすればいいのでしょうか?

以上、宜しくお願いします。


 この数式ではC列で自分より大きな数値をカウントして、それに+1する事で
ランクとしています。($C$1:$C$20>C1)が自分より大きい数値をカウントする為の比較式です。
なので、ここを自分より小さな数値をカウントする比較式に変更すれば、小さい順の順位付けになります。

=IF(C1="","",IF(D1>=30,SUMPRODUCT(($D$1:$D$20>=30)*($C$1:$C$20<C1))+1,SUMPRODUCT(($D$1:$D$20<30)*($C$1:$C$20<C1))+1+SUMPRODUCT(($D$1:$D$20>=30)*($C$1:$C$20<>""))))

 これで出来ると思います。(Yosh!)


 ありがとうございます。
ところで、以下の数式も大きい順ですよね?
A1に=IF(C1="","",RANK(C1,C:C))
C列の数字が小さい順にするには、どう変更すればいいのですか?

宜しくお願いします。


 RANK関数の書式は RANK(数値,範囲,順序) です。
順序は1[TRUE]か0[FALSE]で指定します。TRUEが小さい順、FALSEが大きい順による
ランク付けとなります。RANK(C1,C:C)のように順序を省略すると、0を指定した事と
同じに扱われるので大きい順にランク付けされます。
順序の指定を省略しないで RANK(C1,C:C,1) とすれば小さい順になります。(Yosh!)

 なるほど!
出来ました。ありがとうございます。
エクセルって、ほんとになんでも出来るんですね。
また、何かありましたら、宜しくお願いします。

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.