・売上の多い順に順位をつけたい
・テストの点数で何位かを自動で出したい」
Excelでこういった「順位付け」をするとき、データを並べ替えて手動で番号を振っていませんか?
並べ替えずに順位を表示できるのが RANK関数 です。
元データの並び順を変えずに順位が付けられるので、並べ替えが不要な集計表や成績管理などで特に重宝します。
RANK関数の基本構文
=RANK(数値, 参照, [順序])
| 引数 | 必須/任意 | 内容 |
|---|---|---|
| 数値 | 必須 | 順位を調べたいセル |
| 参照 | 必須 | 順位を比較する範囲全体 |
| 順序 | 任意 | 0または省略:降順(大きい順)/1:昇順(小さい順) |
「この数値は、この範囲の中で何位か?」を返す関数です。
基本的な使い方
例①:売上の高い順に順位を付ける(降順)
B列に売上が入っていて、C列に順位を表示したい場合:
=RANK(B4, $B$4:$B$13, 0)
第3引数の 0 は「降順(大きい順)」です。省略しても同じ結果になります。

ポイントは参照範囲を絶対参照($B$4:$B$13)にすること。
数式を下の行にコピーしても、比較する範囲がズレなくなります。

例②:タイムの速い順に順位を付ける(昇順)
マラソンのタイムや作業時間など、小さい値が良い場合は第3引数を 1 にします。
=RANK(B4, $B$4:$B$11, 1)

同順位(同じ値)の扱い
RANK関数は同じ値があった場合、同じ順位を返し、次の順位を飛ばします。
| 担当者 | 売上 | RANK結果 |
|---|---|---|
| 田中 | 150,000 | 1位 |
| 鈴木 | 120,000 | 2位 |
| 佐藤 | 120,000 | 2位(同順位) |
| 山本 | 100,000 | 4位(3位は飛ばされる) |
これはExcelの仕様であり、RANK関数の標準的な動作です。
RANK関数とRANK.EQ・RANK.AVGの違い
Excel 2010以降では、RANKと同じ機能を持つ RANK.EQ と、同順位を平均順位で返す RANK.AVG が追加されています。
| 関数 | 同順位のときの動作 | 使いどき |
|---|---|---|
| RANK | 同じ順位を返す(旧バージョン互換) | どのExcelでも動かしたいとき |
| RANK.EQ | 同じ順位を返す(RANKと同じ動作) | Excel 2010以降で書き方を統一したいとき |
| RANK.AVG | 同順位の平均順位を返す(2位と2位なら2.5位) | 統計処理など、平均順位が必要なとき |
実務ではほとんどの場合 RANK または RANK.EQ で十分です。
よく使う実務パターン
パターン①:順位を別列に表示する
C2セルに入力して下にコピー:
=RANK(B4, $B$4:$B$13, 0)

パターン②:「1位」「2位」と単位付きで表示する
=RANK(B2, $B$2:$B$11, 0)&"位"

パターン③:上位3位以内なら「★」を表示する
IF関数と組み合わせることで、上位入賞者を自動でハイライトできます。
=IF(RANK(B2, $B$2:$B$11, 0)<=3, "★", "")

よくあるミスと対処法
| 症状 | 原因 | 対処法 |
|---|---|---|
| コピーすると順位がおかしくなる | 参照範囲が相対参照になっている | $B$2:$B$11のように絶対参照にする |
| 全員が1位になる | 数値と参照が同じセルを指している | 数値は1セル、参照は範囲全体を指定する |
| 昇順・降順が逆になる | 第3引数の指定が逆 | 大きい順は0、小さい順は1 |
| #VALUE!エラーが出る | 参照範囲に文字列が混在している | 数値のみの列を参照範囲に指定する |
まとめ
- RANK関数は元データを並べ替えずに順位を付けられる
- 構文は
=RANK(数値, 参照, 順序)の3引数 - 参照範囲は必ず絶対参照($付き)にしてコピー時のズレを防ぐ
- 降順(大→小)は
0または省略、昇順(小→大)は1 - 同じ値は同順位になり、次の順位は飛ばされる
- IF関数と組み合わせると上位N位だけをハイライトできる
一度覚えてしまえば、売上ランキングや成績管理など様々な場面で使い回せる便利な関数です。
まずは基本形から試してみてください!