「売上データの順位をつけたいけど、手作業で並べ替えるのは大変…」と感じたことはありませんか?
データが多いほど目視では限界がありますし、更新のたびに並べ直すのも手間ですよね。
そんなときに便利なのが、RANK関数です。
この記事では基本の書き方から実務で使えるパターン、エラーの対処法まで解説します。
RANK関数とは?
RANK関数は、指定した数値がデータの中で何番目に大きい(または小さい)かを返す関数です。
読み方は「ランク」で、英語の rank(順位)が語源です。
たとえば売上データの中で「A店は何位?」を調べるときに使います。
数式を入れるだけで順位が自動計算されるので、手動で並べ替える必要がありません。
NOTE
RANK関数はExcel 2010以降では互換性関数という扱いです。
新しいRANK.EQ関数が後継として用意されています。
現在のExcelでも問題なく使えますが、新規で数式を作るならRANK.EQ関数がおすすめです。
RANK関数の書き方(構文と引数)
基本構文
=RANK(数値, 参照, [順序])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | 順位を調べたい数値またはセル参照 |
| 参照 | 必須 | 順位の基準となるデータ範囲 |
| 順序 | 省略可 | 0または省略 = 降順(大きい順)、0以外 = 昇順(小さい順) |
数値には、順位を知りたいセルを指定します。
たとえば売上一覧の中でB2セルの値が何位かを調べるなら、数値にはB2を入れます。
参照には、比較対象となるデータ範囲を指定します。
範囲内のテキストや空白セルは自動的に無視されます。
順序を省略すると降順(大きい方が1位)です。
昇順(小さい方が1位)にしたい場合は1を指定してください。
ExcelのRANK関数の基本的な使い方
降順で順位を求める(大きい方が1位)
売上金額が高い順にランキングを付ける場合です。
=RANK(B2,$B$2:$B$10)
B2の値が、B2からB10の範囲内で何番目に大きいかを返します。
第3引数を省略しているので、降順(大きい方が1位)で計算されます。
昇順で順位を求める(小さい方が1位)
タイムや不良品数のように、小さい方がよい数値の場合です。
=RANK(B2,$B$2:$B$10,1)
第3引数に1を指定すると、昇順になります。
値が小さいほど上位(1位に近い)になります。
降順・昇順の使い分け早見表
| 用途 | 第3引数 | 1位になる値 |
|---|---|---|
| 売上ランキング | 0(省略) | 最も高い売上 |
| テスト成績 | 0(省略) | 最も高い得点 |
| コスト比較 | 1 | 最も低いコスト |
| タイム計測 | 1 | 最も短い時間 |
| 不良品数 | 1 | 最も少ない不良品 |
迷ったら「大きい方がいい数値なら降順(省略)、小さい方がいい数値なら昇順(1)」と覚えておくと判断しやすいですよ。
同じ値が複数あるときの順位(タイの処理)
RANK関数では、同じ値が複数ある場合は同じ順位が返されます。
たとえば2番目に大きい値が2つあると順位は以下のようになります。
| データ | 順位 |
|---|---|
| 100 | 1位 |
| 80 | 2位 |
| 80 | 2位 |
| 60 | 4位(3位はスキップ) |
同じ値には同順位がつき、次の順位はその分だけスキップされます。
この動作が困る場合は、後述の「重複なしの順位を作る」パターンで対処できます。
参照に絶対参照を使う理由
RANK関数をオートフィルでコピーするとき、第2引数の参照範囲は必ず絶対参照にしてください。
=RANK(B2,$B$2:$B$10) ← 絶対参照(正しい)
=RANK(B2,B2:B10) ← 相対参照(NG)
相対参照のままコピーすると、行ごとに参照範囲がずれます。
その結果、比較対象が変わって正しい順位が出なくなります。$B$2:$B$10 のように $ を付けて範囲を固定しましょう。
RANK関数の実務活用パターン
パターン1: 売上ランキングの作成
営業担当ごとの月次売上を自動でランキング表示する例です。
A列に氏名、B列に売上金額があるとします。
C列に次の数式を入れます。
=RANK(B2,$B$2:$B$20)
オートフィルでC列全体にコピーすれば、全員の順位が自動で表示されます。
パターン2: テスト成績の順位付け
試験の点数で順位を出し、上位3名をIF関数で判定する例です。
=IF(RANK(B2,$B$2:$B$30)<=3,"合格","")
RANK関数の結果が3以下なら「合格」と表示します。
RANK関数の戻り値は数値なので、他の関数と組み合わせやすいのがポイントです。
パターン3: 条件付き書式で上位を色分け
RANK関数を条件付き書式に使って、上位5名のセルを自動で色付けする方法です。
- 対象範囲を選択します
- 「ホーム」タブの「条件付き書式」から「新しいルール」を選びます
- 「数式を使用して書式設定するセルを決定」を選びます
- 数式に次のように入力します
=RANK(B2,$B$2:$B$20)<=5
これで上位5名のセルが自動的にハイライトされます。
データが更新されるとランキングも自動で変わるので便利です。
パターン4: 重複なしの順位を作る(COUNTIF連携)
同じ値が複数あっても一意の連番順位を振りたい場合です。
COUNTIF関数を組み合わせます。
=RANK(B2,$B$2:$B$10)+COUNTIF($B$2:B2,B2)-1
RANK関数の順位に、同じ値が上に何件あるかを足すことで重複を解消します。
同じ値が3つあっても「2位、3位、4位」のように連番で表示されます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#N/A | 数値が参照範囲に含まれていない | 数値と参照範囲のセルが一致しているか確認する |
#N/A | 数値にテキストが入っている | セルの書式が「文字列」になっていないか確認する。VALUE関数で数値に変換 |
#VALUE! | 数値に数値以外の値を指定した | セル参照を確認し、数値が入ったセルを指定する |
| 順位がずれる | 参照範囲を絶対参照にしていない | $B$2:$B$10 のように$を付けて範囲を固定する |
| 0が順位に含まれる | 空白セルに0が入力されている | 対象範囲から0のセルを除外するか、データを修正する |
NOTE
参照範囲に数値以外のデータ(テキストや空白)が含まれていても、RANK関数は自動的に無視します。
エラーにはなりませんが、順位の母数に含まれない点に注意してください。
RANK関数とLARGE・SMALL関数の違い
RANK関数とよく比較される関数に、LARGE関数とSMALL関数があります。
操作の方向が逆なので、目的に応じて使い分けてください。
| 操作 | 関数 | 入力 → 出力 | 使用例 |
|---|---|---|---|
| 値 → 順位 | RANK | 85を渡す → 4位 | 「この人は何位?」 |
| 順位 → 値 | LARGE | 4位を渡す → 85 | 「4位の値はいくつ?」 |
| 順位 → 値(昇順) | SMALL | 2位を渡す → 72 | 「下から2番目はいくつ?」 |
たとえば同じサンプルデータ {95, 92, 88, 85, 78, 72} の場合、次のような関係になります。
=RANK(85,$B$2:$B$7) → 4(85は4番目に大きい)
=LARGE($B$2:$B$7,4) → 85(4番目に大きい値は85)
RANKが「この値は何位?」と聞くのに対し、LARGEは「何位の値は?」と聞く関数です。
逆方向の操作ですが、結果は対になっていますよ。
RANK.EQ・RANK.AVGとの違い・使い分け
RANK関数には、新しいバージョンとしてRANK.EQ関数とRANK.AVG関数が用意されています。
3つの関数の比較表
| 項目 | RANK | RANK.EQ | RANK.AVG |
|---|---|---|---|
| 構文 | =RANK(数値, 参照, [順序]) | =RANK.EQ(数値, 参照, [順序]) | =RANK.AVG(数値, 参照, [順序]) |
| 同順位の扱い | 最上位の順位 | 最上位の順位 | 平均順位 |
| 互換性 | 互換性関数(旧バージョン向け) | Excel 2010以降の標準関数 | Excel 2010以降の標準関数 |
| 推奨度 | 既存数式の保守向き | 新規作成ならこちら | 統計的に正確な順位が必要な場合 |
同順位の扱いの違い
2番目に大きい値が3つある場合、それぞれの関数は次のように順位を返します。
| データ | RANK / RANK.EQ | RANK.AVG |
|---|---|---|
| 100 | 1位 | 1位 |
| 80 | 2位 | 3位 |
| 80 | 2位 | 3位 |
| 80 | 2位 | 3位 |
| 50 | 5位 | 5位 |
RANK.AVG関数は (2+3+4)/3 = 3 と平均を計算して返します。
統計分析やアンケート集計では、RANK.AVG関数の方が正確な順位を得られます。
どの関数を使うべき?
- 一般的な業務(売上ランキング、成績順位など): RANK.EQ関数
- 統計分析・アンケート集計: RANK.AVG関数
- 既存ファイルの保守: RANK関数(そのまま使い続けてOK)
順位に関連する関数
順位や最大・最小を扱う関数はほかにもあります。
用途に応じて使い分けてみてください。
| 関数 | 機能 |
|---|---|
| LARGE関数 | N番目に大きい値を取得する |
| SMALL関数 | N番目に小さい値を取得する |
| MAX関数 | 最大値を取得する |
| MIN関数 | 最小値を取得する |
| MEDIAN関数 | 中央値を取得する |
| MAXIFS関数 | 条件付きの最大値を取得する |
まとめ
RANK関数は、データの中から指定した値の順位を返す関数です。
=RANK(数値, 参照, [順序])で順位を求められる- 第3引数を省略すると降順(大きい方が1位)
- 参照は絶対参照(
$)で固定するのがポイント - 新規作成なら後継のRANK.EQ関数がおすすめ
- 統計的に正確な順位が必要ならRANK.AVG関数を使う
売上ランキングや成績順位の自動化にぜひ活用してみてください。
