ExcelのRANK(ランク)関数は、データの順位付けをシンプルに行える便利な関数です。大量の数値データで「どれが何位なのか」を瞬時に把握したい場面で、RANK関数を使えば、複雑な操作をしなくても自動で順位を割り出せます。
手作業で順位付けを行うと並べ替えやカウントに手間がかかりますが、RANK関数ならその作業を一瞬で自動化できます。ただし、同値の扱いや昇順・降順の設定によって結果が変わるため、基本的な仕組みを押さえておくことが重要です。
この記事では、RANK関数の基本から、同順位の考えなど、わかりやすく解説します。
※ 記事内では順位付けの関数を総称して「RANK関数」と表記していますが、Excel 2010 以降で推奨されているRANK.EQ / RANK.AVG 関数を中心に解説します。
- RANK関数とは?
- RANK関数の基本の書き方
- RANK.EQ関数の使用例
- RANK.AVG関数の使用例(RANK.EQとの違い)
- RANK関数とデータソート
- RANK関数使用時のおすすめ設定
- まとめ:RANK関数で順位付け作業を効率化しよう
RANK関数とは?
RANK関数は、指定した数値がリストの中で「何位にあたるか」を返す関数です。値の大きさを比較して順位を決めるため、データを並べ替えなくても相対的な位置を簡単に把握できます。
同じ値が複数ある場合は、同順位として同じランクが返されます。また、リストをソートしても、指定した数値の順位そのものは変わらないため、安定した結果を得られるのが特徴です。
RANK関数には順位付けの方法が異なる RANK.EQ関数 と RANK.AVG関数 の2種類があります。RANK.EQ関数は、同じ値がある場合に「同じ順位」を返し、次の順位が飛ぶ一般的な順位付けを行います。
一方、RANK.AVG関数は、同順位となる値に対して「その順位の平均値」を返すため、順位が飛ばず、統計処理などで使われることが多い関数です。
同じ“順位”を求める関数でも目的によって最適な使い分けがあるため、シーンに応じて最も合った関数を選ぶようにしましょう。
RANK関数の基本の書き方
RANK関数の基本の書き方は以下の通りです。
=RANK.EQ/RANK.AVG(数値, 参照範囲, [順序])
RANK関数の引数(関数に渡す値や設定)を詳しく見る
- 数値:順位を求めたい値またはそのセルを入力
- 参照範囲:順位付けの対象となる数値が入っている範囲を指定
- 順序:0または省略の場合は大きい値が1位の降順となり、「1」を入れると小さい値が1位の昇順となる
RANK.EQ関数の使用例
RANK関数をより具体的にイメージするには、データを使って確認するのが一番です。ここでは、テストの点数一覧を例に、RANK.EQ関数を使うとどのように順位が算出されるのかをご紹介します。
大きい点数が上位になる「降順」で順位を求める場合
B3セル(佐藤さんの点数)の順位を求める場合はC3セルに以下の数式を入力します。
佐藤さんの点数「96点」は全体で最も高い点数のため、C3セルには降順の順位「1」が返ります。

小さい点数が上位になる「昇順」で順位を求める場合
B3セル(佐藤さんの点数)の順位を昇順で求める場合はD3セルに以下の数式を入力します。
佐藤さんの点数「96点」は昇順では最下位となり「6」が返されます。

※ このデータには7人分の点数がありますが、同じ点数の人が複数いるため、順位の数は必ずしも「1~7」と連続するわけではありません。同順位の値は同じランクを持ち、次の順位が飛ばされるため、佐藤さんの順位は「6位」となります。(降順の場合:1位→3位→4位→6位→7位となる。)
「降順」と「昇順」の数式を表全体に適用すると以下のようになります。

RANK.AVG関数の使用例(RANK.EQとの違い)
次に、同じデータを使ってRANK.AVG関数ではどのように順位が付けられるのかを確認してみます。
RANK.AVG関数は、同じ値が複数ある場合に「その順位の平均値」を返すのが特徴です。たとえば、 85点(高橋さん・田中さん) のように同点者が2人いる場合、RANK.EQ関数ではどちらも「4位」が返され、次の順位が「6位」に飛びます。

一方、RANK.AVG関数では 4位と5位の平均である「4.5位」が返されます。

RANK.EQ と RANK.AVG は、同じデータに対しても順位の付け方が異なります。そのため、「順位を連続させたいのか」「一般的な順位付けとして同順位をまとめたいのか」など、目的に応じて最適な関数を選ぶことが大切です。
RANK関数とデータソート
RANK関数は、指定した数値がデータの中で「何位にあたるか」を計算するだけのため、データの並び順そのものは変更しないという点には注意が必要です。一覧表の行をそのまま維持し順位だけを知りたい場合に非常に便利です。
また、RANKで求めた順位は、表をソートしても変わりません。順位は参照している範囲内の値から算出されるため、並べ替えによって行の位置が変わっても結果は安定しています。
一方、ソートはデータの順番を並べ替えるだけで、「順位の数字」までは自動でつけてくれません。ソートだけでは「同順位」や「順位の飛び」などの表現もできないため、正確に順位を表示したい場合はRANK関数を使用しましょう。
RANK関数で求めた順位をもとに列をソートすれば、上位順に並んだランキング表を簡単に作成することができます。

RANK関数使用時のおすすめ設定
「範囲」を絶対参照に設定
RANK関数を複数のセルにコピーする場合は、順位を計算する「範囲」を絶対参照にしておくのがおすすめです。絶対参照にしていないと、下方向にコピーしたときに参照範囲がずれてしまい、正しい順位が返されなくなる可能性があります。
記入例:=RANK.EQ(B3, $B$3:$B$9, 0)

空欄が混ざるデータは IF 関数で制御
データによっては途中に空欄がある場合もあります。例の場合、B10(中村さん)の点数セルは空欄のため、RANKは「この値は参照範囲に存在しない」と判断し、#N/A を返します。

#N/A のエラーが出ないようIF関数を併用するとキレイな表に仕上がります。
記入例:=IF(B10="", "", RANK.EQ(B10, $B$3:$B$10, 0))

データを追加する可能性がある場合はテーブル化
あとからデータ行が追加した際に、その度参照範囲を修正するのは手間がかかり、ミスの原因にもなります。データを「テーブル化」して管理すると、以下のようなメリットがあります。
・RANK関数の範囲が自動で拡張される
・数式が自動でコピーされる
・ソートやフィルターが使いやすくなる
テーブル化は以下の手順で行えます。
データの範囲を選択します。例ではA2~F10を選択します。
Ctrlキー+Tキーを押します。

「先頭行をテーブルの見出しとして使用する」にチェックをつけ、OKを押します。

新しい行が増えても範囲が自動で拡張されるため、いつでも正しい順位を計算することができます。

まとめ:RANK関数で順位付け作業を効率化しよう
ExcelのRANK 関数(RANK.EQ / RANK.AVG)は、データを自動で順位付けできる便利な機能で、テストの点数や売上、アンケート集計などに活用できます。
RANK.EQは同点の値に同じ順位を付け、次の順位が飛ぶ一般的な方式で、RANK.AVGは同点の平均順位を返すため順位が連続する点が特徴です。用途に応じて使い分けることで、より適切なランキングを作成できます。
また、表の並びを変えずに順位だけ求めることもでき、ソートと組み合わせれば見やすいランキング表が簡単に作れます。さらに、絶対参照の設定や空欄をIF関数の併用、表のテーブル化などを行うと、より正確で扱いやすい順位付けが可能です。
RANK 関数の特徴を理解して使いこなすことで、Excel の集計や分析作業を効率化できます。