ExcelのRANK関数・RANK.EQの使い方:順位付け・同順位の重複回避
Excelで売上やテストの点数に順位をつけるRANK.EQ関数とRANK.AVG関数の使い方を徹底解説。降順・昇順の切り替え、同順位(重複)を解消する方法、自動で並び替えるリーダーボードの作成法まで詳しく紹介します。
著者 Ayoub Farid · · 3 分で読めます
RANK関数を使うと、指定した数値がリスト全体の中で「何位(1位、2位、3位…)」にあるかを簡単に調べられます。売上ランキングや成績表の順位付け、成績上位者のフラグ付けなどに幅広く役立つ便利なエクセル関数です。
構文
=RANK.EQ(数値, 参照, [順序])
- 順序 に 0 を指定、または省略:数値が大きい順に 1 位(降順:売上やテストの点数など)
- 順序 に 1 を指定:数値が小さい順に 1 位(昇順:タイムやコストなど)
※ 従来の RANK 関数(.EQ がつかないもの)も互換性のために残されており、同じように動作します。
使用例
B2:B11 に売上データが入力されているとします。セル C2 に次の数式を入力します。
=RANK.EQ(B2,$B$2:$B$11)
入力後、オートフィルで下にコピーします。このとき、参照するセル範囲を $ 記号で固定(絶対参照)しないと、下の行にコピーした際に対象範囲がずれて正しく計算されません。詳しくは絶対参照の解説をご覧ください。
最小値を1位にする場合(タイムなど)
=RANK.EQ(B2,$B$2:$B$11,1)
同順位(重複)の扱い
同じ値が存在する場合、RANK.EQ は同順位として同じランクを返し、次の順位をスキップします(例:1位、2位、2位、4位)。一方、RANK.AVG は同順位の値に対して平均の順位を返します(例:1位、2.5位、2.5位、4位)。
重複を出さず、リストの上にあるデータを優先して順位を分けたい場合は、次のように COUNTIF 関数を組み合わせます。
=RANK.EQ(B2,$B$2:$B$11)+COUNTIF($B$2:B2,B2)-1
上位3位にフラグを付ける
=IF(RANK.EQ(B2,$B$2:$B$11)<=3,"Top 3","")
自動で並び替わるランキング表を作る
Microsoft 365 や Googleスプレッドシート をお使いなら、SORT 関数を使って自動ソートされる表を作成できます。
=SORT(A2:B11,2,-1)
使い方の詳細は SORT関数の解説 をご覧ください。なお、単に「2番目に大きい値」だけを取得したい場合は、=LARGE(B2:B11,2) を使用します。
よくある質問
Excelで数値に順位をつけるにはどうすればよいですか?
=RANK.EQ(数値,$セル範囲$) と入力します。数値が小さい方を1位にしたい場合は、3つ目の引数に 1 を指定してください。
RANK.EQ と RANK.AVG の違いは何ですか?
同順位の数値がある場合の処理だけが異なります。RANK.EQ は同じ最上位の順位を全員に付与し、RANK.AVG は該当する順位の平均値を返します。
順位の重複をなくす(一意の順位をつける)にはどうすればよいですか?
上記で紹介したように、COUNTIF 関数を組み合わせて出現順に順位をずらす数式を使用します。
GoogleスプレッドシートでもRANK関数は使えますか?
はい、Googleスプレッドシートでも RANK、RANK.EQ、RANK.AVG のすべてが同様に動作します。