重複しない順序の求め方

RANK関数だと重複順位

同点同順なんて甘いことを言っていられない!どうしても白黒ハッキリさせなければならない時がある。

EW-SYS.INFO

同点同順

 表計算ソフトで用意されていたRANK関数は、順位を求める数値が同じだった場合、同順として答えを出します。

ABB列の計算式
1824=RANK(A1,$A$2:$A$5,FALSE)
2981=RANK(A2,$A$2:$A$5,FALSE)
3873=RANK(A3,$A$2:$A$5,FALSE)
4981=RANK(A4,$A$2:$A$5,FALSE)

 それは、どちらが上位であるか、明確なルールを設ける引数が無いからです。なおかつ、そのルールもそれぞれ違ってくるので、安易に上位を決められません。だから同点同順になる仕様になっているのです。

順位を重複させない簡単な方法

 どちらが上位か決める簡単なルールは「先勝ち法」です。先に出てきた方が上位、表の上の行に居る方が上位という訳です。最初の表の並び順で決まる訳ですから、不公平極まりない方法ですが、最も簡単な方法です。

ABCC列の計算式
18241=COUNTIF($A$1:A1,A1)
29811=COUNTIF($A$1:A2,A2)
38731=COUNTIF($A$1:A3,A3)
49812=COUNTIF($A$1:A4,A4)

 まず、順位を求める数値の個数を求めるために、COUNTIF関数を使います。この時、範囲指定が1行目から自分の行(計算式の入っている行)までになっている点がポイントです。「先勝ち法」ですから、これまでに自分と同じ数値がいくつあるか数えるためです。
 B列の順位とC列の個数を足すと・・・

ABCD
182415
298112
387314
498123

 D列の様に数値がバラバラになりました。このままでは1位が無くなってしまいますので、D列から1を引きます。

ABCDE
1824154
2981121
3873143
4981232

 これで「先勝ち法」による同点同順が解消されました。

計算式をまとめる

 計算式をまとめれば「先勝ち法」による順位を求めるために4列も使う必要はありません。
 今回は、順位を求める関数に、個数を求める関数を足して、1を引いただけなので、

ABB列の計算式
1824=RANK(A1,$A$1:$A$4,FALSE)+COUNTIF($A$1:A1,A1)-1
2981=RANK(A2,$A$1:$A$4,FALSE)+COUNTIF($A$1:A2,A2)-1
3873=RANK(A3,$A$1:$A$4,FALSE)+COUNTIF($A$1:A3,A3)-1
4982=RANK(A4,$A$1:$A$4,FALSE)+COUNTIF($A$1:A4,A4)-1

 という計算式にまとめられます。

 今回のサンプルとして、MicrosoftExcel©でつくったBookをダウンロードできるようにしておきます。

「先勝ち法」以外のルール策定が肝心

 最初の表の行が上に合っただけで、1位が決まってしまうのは、何とも理不尽です。同点1位だったハズが2位になるとは・・・と当人にとっては受け入れがたい事でしょう。
 そのために、順位に白黒つけるための明確なルールが必要になるのです。順位を決める場合は、前もって不平不満の出ないルール作りを心掛けてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください