- ベストアンサー
エクセルでの同率順位の対処方法
- エクセル上で同率順位を表示する際、異なる色で区別するための方法を紹介します。
- 現在の方法では同率1位が2つある場合に問題が発生し、2番目に大きい数字が正しく表示されません。
- 改善案として、同率1位が2つ以上ある場合でも正しく表示する方法を提案します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ありゃりゃ。とんだ手抜かりを。 んでは簡単じゃない数式を使った方法で。 それぞれ「次の値に等しい」で 1位: =LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),1) 2位: =LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),2) 3位: =LARGE(IF(FREQUENCY($C$6:$C$100+0,$C$6:$C$100+0),$C$6:$C$100),3) 失礼しました。
その他の回答 (4)
添付図参照 1.セル B1 に式 =IF(COUNTIF(A$1:A1,A1)>1,"",A1) を入力して、 此れを下方にズズーッとドラッグ&ペースト 2.セル A1 に次の[条件付き書式]を設定して、範囲 A2:A5 に [書式の貼り付け]を実行 条件1 数式が =RANK(A1,B$1:B$5)=1 フォント色 赤 条件2 数式が =RANK(A1,B$1:B$5)=2 フォント色 青 条件3 数式が =RANK(A1,B$1:B$5)=3 フォント色 緑
お礼
回答ありがとうございます。 出てきた数字を調べてBに書き出す(同じ数字は2回目以降は空白) Aセルの値をBに書き出した数字でランク降順にして、それぞれ1位・2位・3位となった場合にそれぞれ色を付ける。 と言った風に解釈しました。 色んなやり方で出来るのですね。どれも思いつかない方法だったので助かりました。
- kagakusuki
- ベストアンサー率51% (2610/5101)
ANo.1様の方法ですと、一位の数字と二位の数字の方法に関しましては、大変優れた方法だと思います。 但し、三位の数字の方法に関しましては、一位の数字が複数存在している場合には、誤った動作をしてしまいます。 ですから、三位の数字の場合は =LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,2))+1) ではなく、 =LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,MAX($C$6:$C$100))+1))+1) 等とする必要があります。
お礼
回答ありがとうございます。 この方法を使う事で解決しました。 3位の方法は自分なりに解釈しようとしたのですが、特に大なりイコールとアンドで結ばれている所が分りませんでした。 解釈は出来ていませんが解決は出来ました。ありがとうございます。 ベストアンサーに非常に悩んだのですが、ベストアンサーが1つしか選べないので申し訳ないです。
- Cupper-2
- ベストアンサー率29% (1342/4565)
自分は計算の誤差にならない微少な数字を各値に加えちゃいます。 10 → 10 + 0.000001 20 → 20 + 0.000002 30 → 30 + 0.000003 40 → 40 + 0.000004 40 → 40 + 0.000005 面倒なのでROW関数を使って 10 → 10 + ROW()/1000000 20 → 20 + ROW()/1000000 30 → 30 + ROW()/1000000 40 → 40 + ROW()/1000000 40 → 40 + ROW()/1000000 と、しちゃうかな。 でもって、微少数値を加えた後でLARGE関数を使うとかします。
お礼
回答ありがとうございます。 今回は同率1位を両方とも赤色にした上で次の順位を青色と言った具合にしたかったので、 質問の仕方が悪かったのかも知れませんが、この方法は同率1位を回避する事に使えそうです。 一つの参考になりました。
- keithin
- ベストアンサー率66% (5278/7941)
簡単な関数だけで結果を得るなら。 一位の数字は今のままでもいいですが =MAX($C$6:$C$100) でいいです。 二位の数字は =LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,MAX($C$6:$C$100))+1) 三位の数字は =LARGE($C$6:$C$100,COUNTIF($C$6:$C$100,">="&LARGE($C$6:$C$100,2))+1) などのように拾ってくることができます。 それぞれ「次の値に等しい」に与えます。
お礼
素早い回答ありがとうございます。 2位の方法はMAX関数で1位の数を調べ、それに+1する事で次が何位になるのか分かるので、 それをLARGE関数で抜き出すと言う風に解釈しました。 同率1位がいくつあろうと、その次の順位を抜き出すのはややこしい手順が必要なんですね。
お礼
別の方法での回答ありがとうございます。 この方法を使うと出来ましたが、ちょっと参照量が多くなると動作が重くなってしまいました。 FREQUENCY関数と言うのは初めて見たので、理解は出来ていませんが方法の一つとして参考になりました。 No.3のkagakusuki様の補足もあり、最初に回答された方法と併せて解決しました。 ありがとうございました。