ExcelのRANK関数の使い方|順位を求める基本から実務活用まで解説

スポンサーリンク

「売上データの順位をつけたいけど、手作業で並べ替えるのは大変…」と感じたことはありませんか?
データが多いほど目視では限界がありますし、更新のたびに並べ直すのも手間ですよね。

そんなときに便利なのが、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つあると順位は以下のようになります。

データ順位
1001位
802位
802位
604位(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名のセルを自動で色付けする方法です。

  1. 対象範囲を選択します
  2. 「ホーム」タブの「条件付き書式」から「新しいルール」を選びます
  3. 「数式を使用して書式設定するセルを決定」を選びます
  4. 数式に次のように入力します
=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関数があります。
操作の方向が逆なので、目的に応じて使い分けてください。

操作関数入力 → 出力使用例
値 → 順位RANK85を渡す → 4位「この人は何位?」
順位 → 値LARGE4位を渡す → 85「4位の値はいくつ?」
順位 → 値(昇順)SMALL2位を渡す → 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つの関数の比較表

項目RANKRANK.EQRANK.AVG
構文=RANK(数値, 参照, [順序])=RANK.EQ(数値, 参照, [順序])=RANK.AVG(数値, 参照, [順序])
同順位の扱い最上位の順位最上位の順位平均順位
互換性互換性関数(旧バージョン向け)Excel 2010以降の標準関数Excel 2010以降の標準関数
推奨度既存数式の保守向き新規作成ならこちら統計的に正確な順位が必要な場合

同順位の扱いの違い

2番目に大きい値が3つある場合、それぞれの関数は次のように順位を返します。

データRANK / RANK.EQRANK.AVG
1001位1位
802位3位
802位3位
802位3位
505位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関数を使う

売上ランキングや成績順位の自動化にぜひ活用してみてください。

関連記事

タイトルとURLをコピーしました