Excelでテストの成績や売上データの順位を出したいこと、ありますよね。「このデータ、何番目なんだろう?」と手作業で並べ替えて数えるのは、データが多いほど大変です。
そんなときに便利なのがRANK.EQ関数です。セルに数式を入れるだけで、指定した値がデータの中で何位なのかをサッと求められますよ。
この記事では、ExcelのRANK.EQ関数の基本的な使い方から、同じ値があるときの順位の扱い、似た関数との違いまでわかりやすく解説します。
ExcelのRANK.EQ関数とは?
RANK.EQ関数は、指定した数値がデータの中で何番目に位置するかを返す関数です。読み方は「ランク・イコール」で、EQは「Equal(イコール=等しい)」の略です。
この関数の特徴は、同じ値が複数あるとき、最上位の順位を返すことです。たとえば80点が2人いて、全体で3位と4位に相当する場合、どちらにも「3位」を返します。
RANK.EQ関数はExcel 2010以降で使えます。それより前のバージョンで使われていたRANK関数と同じ結果を返しますが、RANK関数は将来のバージョンで廃止される可能性があります。今からはRANK.EQ関数を使うのがおすすめですよ。
ExcelのRANK.EQ関数の書き方(構文と引数)
基本構文
=RANK.EQ(数値, 参照, [順序])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | 順位を調べたい数値またはセル参照 |
| 参照 | 必須 | 順位の基準となるデータ範囲 |
| 順序 | 省略可 | 0または省略で降順(大きい順)、0以外の数値で昇順(小さい順) |
数値には、順位を知りたい値そのものか、その値が入っているセルを指定します。
参照には、順位を比較するデータ範囲を指定します。範囲内のテキストや空白セルは無視されます。
順序は省略すると降順(大きい値ほど上位)になります。昇順(小さい値ほど上位)にしたい場合は「1」を指定してください。タイムや経過時間の順位づけなど、小さい方が良い場面で使いますよ。
RANK.EQ関数の基本的な使い方
ここでは、5人のテスト点数に順位をつける例で使い方を見てみましょう。
以下のようなデータがあるとします。
| A列(名前) | B列(点数) | |
|---|---|---|
| 1行目 | 田中 | 85 |
| 2行目 | 鈴木 | 92 |
| 3行目 | 佐藤 | 78 |
| 4行目 | 山田 | 95 |
| 5行目 | 高橋 | 88 |
C1セルに次の数式を入力します。
=RANK.EQ(B1,$B$1:$B$5)
B1の値「85」は、降順で {95, 92, 88, 85, 78} の4番目なので、結果は 4 です。
このC1の数式をC2からC5までコピーすると、全員の順位が一度に求められます。参照範囲を $B$1:$B$5 と絶対参照にしているのがポイントです。こうすることで、数式をコピーしても参照範囲がずれません。
各セルの結果は次のとおりです。
| 名前 | 点数 | 順位 |
|---|---|---|
| 田中 | 85 | 4 |
| 鈴木 | 92 | 2 |
| 佐藤 | 78 | 5 |
| 山田 | 95 | 1 |
| 高橋 | 88 | 3 |
同じ値があるときの順位の扱い
RANK.EQ関数は、同じ値が複数あるとき最上位の順位を返します。ここが「EQ(イコール)」の名前の由来でもあります。
たとえば以下のデータで確認してみましょう。
| A列(名前) | B列(点数) | |
|---|---|---|
| 1行目 | 田中 | 85 |
| 2行目 | 鈴木 | 92 |
| 3行目 | 佐藤 | 85 |
| 4行目 | 山田 | 95 |
| 5行目 | 高橋 | 88 |
田中さんと佐藤さんの点数がどちらも85点です。降順に並べると {95, 92, 88, 85, 85} となり、85点は4位と5位に相当します。
RANK.EQ関数はどちらにも上位の「4」を返します。5位は飛ばされ、欠番になるのが特徴です。
ちなみに、同じ値に平均の順位を返したい場合はRANK.AVG関数を使います。RANK.AVG関数なら (4+5)/2 = 4.5 が返されますよ。
| 関数 | 85点の順位 | 特徴 |
|---|---|---|
| RANK.EQ | 4 | 最上位の順位を返す |
| RANK.AVG | 4.5 | 平均の順位を返す |
| RANK | 4 | RANK.EQと同じ(互換性用) |
用途に応じて使い分けてみてください。
実践的な使い方・応用例
昇順で順位をつける(小さい値ほど上位)
タイムや経費など、小さい値が良い場面では第3引数に「1」を指定します。
=RANK.EQ(B1,$B$1:$B$5,1)
先ほどの5人の点数データ {85, 92, 78, 95, 88} で昇順にすると、78点が1位、85点が2位…というように小さい方から順位がつきます。
COUNTIF関数と組み合わせて重複なし順位を作る
RANK.EQ関数だけだと、同じ値に同じ順位がつきます。重複なしの連番順位が必要なら、COUNTIF関数と組み合わせる方法が便利です。
=RANK.EQ(B1,$B$1:$B$5)+COUNTIF($B$1:B1,B1)-1
COUNTIF部分が「自分より上に同じ値がいくつあるか」を数えて、順位をずらしてくれます。名簿順のデータで重複なしの連番が必要なときに活用してみてください。
LARGE関数・SMALL関数で順位から値を逆引きする
RANK.EQ関数は「値から順位」を求めますが、逆に「順位から値」を求めたいときはLARGE関数やSMALL関数を使います。
=LARGE($B$1:$B$5,1) → 1位の値(95)
=SMALL($B$1:$B$5,1) → 最下位の値(78)
RANK.EQで順位を求めて、LARGEやSMALLで該当する値を取り出す、という組み合わせもよく使われますよ。
よくあるエラーと対処法
#N/Aエラー
指定した数値が参照範囲に含まれていないと #N/A エラーになります。
よくある原因と対処法:
- 数値引数のセル参照が範囲外を指している → 参照先を確認してください
- 参照範囲がずれている → 絶対参照($記号)を使って範囲を固定しましょう
- 数値のように見えて文字列になっている → セルの表示形式を「数値」に変更するか、VALUE関数(文字列を数値に変換する関数)で数値に変換してみてください
#VALUE!エラー
引数に数値でも参照でもない値(テキストなど)を直接指定すると #VALUE! エラーになります。数値引数にはセル参照か数値を入れるようにしましょう。
順位が正しくない場合
参照範囲にテキストや空白が混ざっていると、意図した順位にならないことがあります。参照範囲が数値データだけを含んでいるか確認してみてください。
似た関数との違い・使い分け
| 関数名 | 同じ値の順位 | 対応バージョン | おすすめ度 |
|---|---|---|---|
| RANK.EQ | 最上位の順位を返す | Excel 2010以降 | 一般的な順位づけに最適 |
| RANK.AVG | 平均の順位を返す | Excel 2010以降 | 統計分析向け |
| RANK | 最上位の順位を返す | 全バージョン | 互換性用(非推奨) |
迷ったらRANK.EQ関数を選んでおけば大丈夫です。 同じ値があるときの扱いが最も直感的で、多くの場面で期待どおりの結果が得られますよ。
統計分析で平均順位が必要な場合や、小数点を含む精密な順位が必要な場合はRANK.AVG関数を選んでください。
まとめ
RANK.EQ関数のポイントをおさらいしましょう。
- 構文:
=RANK.EQ(数値, 参照, [順序]) - 読み方: ランク・イコール
- 同じ値の扱い: 最上位の順位を返す
- 降順・昇順: 第3引数を省略で降順、1で昇順
- コピーのコツ: 参照範囲は絶対参照にする
RANK.EQ関数は、成績表や売上ランキングなど、データに順位をつけたい場面で幅広く使えます。同じ値に対して最上位の順位を返すというシンプルな仕組みなので、まずはこの関数から順位づけを始めてみてください。
