rank関数
RANK(数値,範囲,[順序])
範囲の中で数値(セルの値)の順位を返します。順序に0 を指定するか、省略すると、数値が大きい方から順に1、2、3と順位が付きます。順序に 0 以外の数値を指定すると、 数値が小さい方から順に1、2、3、と順位が付きます。ただし、数値が重複したら上位で同順位となり以降、欠番が生じます。
excel2010からrank関数はrank.eq関数とrank.avg関数に置き換えられました。後方互換のためにエクセル2013でも使用できます。
rank関数と同等の結果を返すのがrank.eq関数になります。
A | B | C | |
1 | 国語 | 順位 | |
2 | 田中 | 88 | =RANK.EQ(B2,B2:B5,0) |
3 | 吉田 | 85 | |
4 | 山本 | 69 | |
5 | 吉村 | 92 |
セルC2にセルB2の値がB2からB5の範囲内で点数の多い順で何位かを調べるために、
=RANK.EQ(B2,B2:B5,0)
という式を入れると2という値が返ります(第3引数の0は省略できます)。この式をこのままオートフィルでコピーすると
=RANK.EQ(B2,B2:B5,0)
=RANK.EQ(B3,B3:B6,0)
=RANK.EQ(B4,B4:B7,0)
と範囲のセルも順にずれてしまうので
=RANK.EQ(B2,$B$2:$B$5,0)
と範囲をF4キーを使って絶対参照にしておけばオートフィルでコピーしても正しい順位が返ります。
ゴルフのスコアのように数字が少ない方が順位が上になるような場合は第3引数の[順序]を0以外の数値(大体は1を使うことが多いと思いますが)、をしてすれば数値の少ないほうから1,2,3となります。
セルB3の値を88に変更し同順位があった場合を確認します。
A | B | C | |
1 | 国語 | 順位 | |
2 | 田中 | 88 | =RANK.EQ(B2,B2:B5,0) |
3 | 吉田 | 88 | |
4 | 山本 | 69 | |
5 | 吉村 | 92 |
順位2が2人になり順位3が欠番となり次の順位が4になります。
この順位2は本当は2.5位が本来の順でしょ、という風にしたい場合はrank.avg関数を使います。
=RANK.AVG(B2,$B$2:$B$5,0)