ExcelのRANK関数の使い方|降順・昇順・重複なし順位まで解説

スポンサーリンク

「売上データにランキングを付けたいけど、手作業で並べ替えるのは面倒…」。こんな場面、仕事で意外と多いですよね。

データが増えるたびに目視で順位を振り直すのは大変ですし、ミスも起きやすいです。

ExcelのRANK関数を使えば、数式ひとつで順位を自動計算できます。 この記事では基本の書き方から降順・昇順の切り替え、同順位の処理、重複なしの連番順位の作り方まで解説します。

RANK関数とは?

RANK関数は、指定した数値がデータの中で何番目に大きいか(または小さいか)を返す関数です。

読み方は「ランク関数」です。英語の「rank(順位・等級)」がそのまま関数名になっています。すべてのExcelバージョンで使えます。

たとえば売上データの中で「A店は何位?」を調べるときに使います。数式を入れるだけで順位が自動計算されるので、手動で並べ替える必要がありません。

NOTE

RANK関数はExcel 2010以降では互換性関数という扱いです。新しいRANK.EQ関数が後継として用意されています。現在のExcelでも問題なく使えますが、新規で数式を作るならRANK.EQ関数がおすすめです。

ExcelのRANK関数の書き方(構文と引数)

基本構文

=RANK(数値, 参照, [順序])

引数の説明

引数必須/省略可説明
数値必須順位を調べたい数値またはセル参照
参照必須順位の基準となるデータ範囲
順序省略可0または省略 = 降順(大きい順)、0以外 = 昇順(小さい順)

数値には、順位を知りたいセルを指定します。たとえば売上一覧の中でB2セルの値が何位かを調べるなら、B2を入れます。

参照には、比較対象となるデータ範囲を指定します。テキストや空白セルは自動的に無視されます。

順序を省略すると降順(大きい方が1位)です。昇順(小さい方が1位)にしたい場合は1を指定してください。

TIP

第3引数は省略すると0扱い(降順)になります。売上やテスト点数など「大きいほど良い」データなら、省略してOKです。

ExcelのRANK関数の基本的な使い方

降順で順位を求める(大きい方が1位)

売上金額が高い順にランキングを付ける場合です。

たとえばA列に担当者名、B列に売上金額が入っているとします。C2セルに次の数式を入力します。

=RANK(B2,$B$2:$B$8)

B2の値が、B2からB8の範囲で何番目に大きいかを返します。第3引数を省略しているので、降順で計算されます。

C3以降にもオートフィルでコピーすれば、全員分の順位が一括で表示されます。

昇順で順位を求める(小さい方が1位)

タイムや不良品数のように、小さい方がよい数値の場合です。

=RANK(B2,$B$2:$B$8,1)

第3引数に1を指定すると、昇順になります。値が小さいほど上位(1位に近い)です。

降順・昇順の使い分け早見表

どちらを使うか迷ったときは、次の表を参考にしてみてください。

用途第3引数1位になる値
売上ランキング0(省略)最も高い売上
テスト成績0(省略)最も高い得点
コスト比較1最も低いコスト
タイム計測1最も短い時間
不良品数1最も少ない不良品

「大きい方がいい数値なら降順(省略)、小さい方がいい数値なら昇順(1)」と覚えておくと判断しやすいですよ。

同じ値があるときの順位(同順位の処理)

RANK関数では、同じ値が複数あると同じ順位を返します。次の順位はその分だけスキップされます。

たとえばデータが {100, 80, 80, 60} の場合、降順の順位は次のとおりです。

データ順位
1001位
802位
802位
604位(3位はスキップ)

80が2つあるので、両方に2位がつきます。3位は飛ばされて、60は4位です。

この動作が困る場合は、後述の「重複なしの連番順位を作る」パターンで対処できます。

参照に絶対参照を使う理由

RANK関数をオートフィルでコピーするとき、第2引数の参照範囲は必ず絶対参照にしてください。

=RANK(B2,$B$2:$B$8)    ← 絶対参照(正しい)
=RANK(B2,B2:B8)        ← 相対参照(NG)

相対参照のままコピーすると、行ごとに参照範囲がずれます。その結果、比較対象が変わって正しい順位が出なくなります。

$B$2:$B$8 のように $ を付けて範囲を固定しましょう。

RANK関数の実務活用パターン

パターン1: 売上ランキングの作成

営業担当ごとの月次売上を自動でランキング表示する例です。

A列に氏名、B列に売上金額があるとします。C列に次の数式を入れます。

=RANK(B2,$B$2:$B$20)

オートフィルでC列全体にコピーすれば、全員の順位が表示されます。売上データが更新されると順位も自動で再計算されるので、毎月の集計が楽になりますよ。

パターン2: IF関数と組み合わせて上位判定

試験の点数で順位を出し、上位3名をIF関数で判定する例です。

=IF(RANK(B2,$B$2:$B$30)<=3,"合格","")

RANK関数の結果が3以下なら「合格」と表示します。RANK関数の戻り値は数値なので、IF関数などと組み合わせやすいのがポイントです。

パターン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関数の順位に、同じ値がそれまでに何件あるかを足して重複を解消します。

たとえば80が3つあった場合、RANK関数だけだと全部2位です。COUNTIF連携を使うと「2位、3位、4位」のように連番になります。

ポイントはCOUNTIF関数の範囲の開始位置を絶対参照、終了位置を相対参照にしていることです。$B$2:B2 とすることで、行が下がるにつれてカウント範囲が広がります。

よくあるエラーと対処法

RANK関数でよく発生するエラーとその原因・対処法を表にまとめました。

エラー原因対処法
#N/A数値が参照範囲に含まれていない数値と参照範囲のセルが一致しているか確認する
#N/Aテキストとして保存された数値セルの書式が「文字列」になっていないか確認する。VALUE関数で数値に変換
#VALUE!数値に数値以外の値を指定したセル参照を確認し、数値が入ったセルを指定する
順位がずれる参照範囲を絶対参照にしていない$B$2:$B$10 のように$を付けて範囲を固定する
0が順位に含まれる空白セルに0が入力されている対象範囲から0のセルを除外するか、データを修正する

NOTE

参照範囲にテキストや空白が含まれていても、RANK関数は自動的に無視します。エラーにはなりませんが、順位の母数には含まれない点に注意してください。

エラー値の詳細はExcelのエラー値一覧も参考にしてみてください。

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、「順位に対応する値がほしい」ならLARGEまたはSMALLを使うと覚えておきましょう。

RANK・RANK.EQ・RANK.AVGの違いと使い分け

RANK関数には、新しいバージョンとしてRANK.EQ関数RANK.AVG関数が用意されています。

3つの関数の比較表

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

同順位の扱いの違い

3つの関数の一番大きな違いは、同じ値が複数あるときの順位の返し方です。

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)

RANKとRANK.EQは結果が同じなので、どちらを使っても計算は変わりません。新規作成ならRANK.EQ、既存ファイルならRANKのままで問題ありませんよ。

まとめ

RANK関数は、データの中から指定した値の順位を返す関数です。この記事のポイントを整理しておきます。

  • =RANK(数値, 参照, [順序]) で順位を求められる
  • 第3引数を省略すると降順(大きい方が1位)
  • 参照範囲は絶対参照($)で固定するのがポイント
  • 同じ値には同じ順位がつく。連番にしたいならCOUNTIF関数と組み合わせる
  • 新規作成なら後継のRANK.EQ関数がおすすめ
  • 統計的に正確な順位が必要ならRANK.AVG関数を使う

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

順位に関連する関数

順位や最大・最小を扱う関数はほかにもあります。用途に応じて使い分けてみてください。

関数機能
LARGE関数N番目に大きい値を取得する
SMALL関数N番目に小さい値を取得する
MAX関数最大値を取得する
MIN関数最小値を取得する
MEDIAN関数中央値を取得する
SORT関数データを自動で並べ替える

関連記事

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