• 作成日 : 2025年5月21日

ExcelのRANK関数の使い方!データの順位付けを自動化しよう

Excelで数値データの順位を付けたいならRANK関数が便利!RANK.EQとRANK.AVGの違い、絶対参照のコツ、同順位の扱い方、COUNTIFを使った複数条件設定、エラー対処法まで、実例を交えて詳しく説明します。

RANK関数の基本的な使い方 (RANK.EQ / RANK.AVG)

まずは、RANK関数の基本的な使い方を見ていきましょう。ここでは、生徒たちのテストの点数に順位をつける例で説明します。

準備: 以下のような簡単な表をExcelで作成してみてください。

氏名点数順位 (RANK.EQ)順位 (RANK.AVG)
佐藤85
鈴木92
高橋78
田中92
伊藤65
渡辺85

RANK.EQ関数の使い方

RANK.EQ関数は、指定した数値が範囲内で何番目かを返します。同点の場合は同じ順位になります。

構文:

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

  • 数値: 順位を求めたい数値、またはその数値が入力されているセルを指定します。(例:B2)
  • 参照: 順位付けの対象となる数値が含まれるセル範囲全体を指定します。この範囲は後で数式をコピー(オートフィル)することを考慮し、絶対参照(例:$B$2:$B$7)にしておくのが非常に重要です。
  • [順序]: 省略可能。順位を決める方法を指定します。
    • 0 または省略: 降順 (数値が大きいほど順位が上、例:点数が高い方が1位)
    • 0 以外の数値 (通常は 1): 昇順 (数値が小さいほど順位が上、例:タイムが短い方が1位)

操作手順:

  1. 順位を表示したいセルを選択: まず、佐藤さんの順位を表示したいセル C2 をクリックします。
  2. 数式を入力: C2 セルに以下の数式を入力します。 =RANK.EQ(B2,$B$2:$B$7,0)
    • B2: 佐藤さんの点数(順位を求めたい数値)
    • $B$2:$B$7: 点数全体の範囲(絶対参照で固定)
    • 0: 降順(点数が高い方が上位)
  3. Enterキーを押す: 佐藤さんの順位が表示されます。
  4. オートフィルでコピー: C2 セルの右下にマウスカーソルを合わせ、黒い十字(フィルハンドル)が表示されたら、それをダブルクリックするか、下方向にドラッグして他の生徒のセル(C7 まで)に数式をコピーします。

これで、全員の順位がRANK.EQ関数で自動的に計算されます。92点の鈴木さんと田中さんは同じ1位、85点の佐藤さんと渡辺さんは同じ3位になっているはずです(1位が2人いるので、次は3位になります)。

RANK.AVG関数の使い方

RANK.AVG関数は、同点の場合に平均順位を返します。

構文:

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

引数はRANK.EQ関数と全く同じです。

操作手順:

  1. 順位を表示したいセルを選択: 佐藤さんの平均順位を表示したいセル D2 をクリックします。
  2. 数式を入力: D2 セルに以下の数式を入力します。 =RANK.AVG(B2,$B$2:$B$7,0)
  3. Enterキーを押す: 佐藤さんの平均順位が表示されます。
  4. オートフィルでコピー: D2 セルのフィルハンドルを使って、D7 まで数式をコピーします。

結果を見ると、92点の鈴木さんと田中さんは、1位と2位の平均である「1.5位」に、85点の佐藤さんと渡辺さんは、3位と4位の平均である「3.5位」になっていることが確認できます。

絶対参照 ($) の重要性

RANK関数を使う上で最も注意すべき点の一つが、「参照」範囲の絶対参照です。

数式をオートフィルでコピーすると、通常、参照するセル範囲も一緒にずれてしまいます。例えば、C2 に =RANK.EQ(B2,B2:B7,0) と入力して下にコピーすると、C3 の数式は =RANK.EQ(B3,B3:B8,0) となり、参照範囲がずれて正しい順位が計算されません。

これを防ぐために、参照範囲は $ マークを使って $B$2:$B$7 のように絶対参照で固定する必要があります。$ は列番号の前($B)と行番号の前($2)の両方につけることで、コピーしても範囲がずれないようにロックします。

絶対参照の簡単な入力方法:

数式バーで参照範囲(例:B2:B7)を選択した状態で、キーボードの F4キー を押すと、相対参照 → 絶対参照 → 行固定 → 列固定 → 相対参照… と順番に切り替わります。$B$2:$B$7 の形式になるまでF4キーを押してください。

RANK関数の便利な利用シーン

RANK関数は様々な場面で活用できます。いくつか代表的な例をご紹介します。

テストの成績順位付け

学習塾や学校での成績管理にRANK関数は不可欠です。科目ごとの順位や合計点の順位を簡単に出すことができます。

売上ランキング作成

営業成績や商品別の売上データを集計し、ランキングを作成する際に便利です。どの担当者や商品が好調なのかを一目で把握できます。降順(売上が高い順)で順位付けするのが一般的です。

目標達成率の順位付け

各部署や個人の目標達成率を算出し、その達成度合いをランキング形式で比較するのに役立ちます。モチベーション向上や評価の参考資料として活用できます。これも降順(達成率が高い順)で使うことが多いでしょう。

その他

  • アンケート結果の集計: 回答項目ごとの人気度や満足度をランキング表示。
  • Webサイトのアクセス数: ページごとのアクセス数をランキング化し、人気コンテンツを把握。
  • スポーツの記録: タイムやスコアをランキング化(タイムの場合は昇順)。

このように、数値データを比較して序列をつけたいあらゆる場面でRANK関数は役立ちます。

同順位の場合の課題と複数条件での順位付け

RANK.EQ関数では、同点の場合に同じ順位が割り当てられます。これは一般的な順位付けですが、場合によっては「同点でも何らかの基準で差をつけたい」というケースがあります。例えば、テストの合計点が同じ場合は、特定の科目(例:数学)の点数が高い方を上位にしたい、といった場合です。

残念ながら、RANK関数単体ではこのような複数条件での順位付けはできません。しかし、他の関数と組み合わせることで実現可能です。ここでは、比較的よく使われるCOUNTIF関数を組み合わせた方法をご紹介します。

COUNTIF関数を組み合わせた解決策

この方法は、まず主となるキー(例:合計点)でRANK.EQ関数を使って基本的な順位を求め、それに「自分より上に同じ点数の人が何人いるか」をCOUNTIF関数で数えて加算することで、同順位の場合に差をつけるという考え方です。

考え方のステップ:

  1. 基本順位: まず、主キー(例:合計点)で RANK.EQ を使って順位を計算します。
  2. 同順位補正: 同じ主キーの値を持つデータが、自分自身を含めて上から何番目に現れるかを COUNTIF で数えます。ただし、単純に数えると1から始まるため、COUNTIFの結果 – 1 を基本順位に加えます。

具体的な数式例 (合計点がB列、氏名がA列にある場合):

仮に、以下のようなデータで、合計点(B列)が同じ場合は、出席番号(仮に振られているとしてC列)が小さい方を上位としたいとします。(簡単のため、ここでは氏名順=出席番号順と仮定し、範囲内の登場順で差をつけます)

氏名合計点最終順位
佐藤180
鈴木195
高橋170
田中195
伊藤180

C2 セルに入力する数式:

=RANK.EQ(B2,$B$2:$B$6,0)+COUNTIF($B$2:B2,B2)-1

数式の解説:

  • RANK.EQ(B2,$B$2:$B$6,0): まず、合計点(B列)で基本的な降順の順位を計算します。
  • COUNTIF($B$2:B2,B2): ここがポイントです。
    • $B$2:B2: COUNTIFの範囲の開始位置は絶対参照 ($B$2)、終了位置は相対参照 (B2) にします。これにより、数式を下にコピーすると、範囲が $B$2:B3, $B$2:B4 … と自動的に拡張され、「その行までの範囲で」同じ点数が何回出現したかを数えることができます。
    • B2: 検索条件として、その行の合計点を指定します。
  • -1: COUNTIFは自分自身も数えてしまうため、最後に1を引くことで、「自分より上に同じ点数の人が何人いるか」を計算し、それを基本順位に加算します。

この数式を C2 から C6 までコピーすると、

  • 鈴木さん(195点): RANK.EQで1位。$B$2:B2 で195は1回目なので COUNTIF(…) は 1。よって 1 + 1 – 1 = 1位。
  • 田中さん(195点): RANK.EQで1位。$B$2:B4 で195は2回目なので COUNTIF(…) は 2。よって 1 + 2 – 1 = 2位。
  • 佐藤さん(180点): RANK.EQで3位。$B$2:B2 で180は1回目なので COUNTIF(…) は 1。よって 3 + 1 – 1 = 3位。
  • 伊藤さん(180点): RANK.EQで3位。$B$2:B5 で180は2回目なので COUNTIF(…) は 2。よって 3 + 2 – 1 = 4位。
  • 高橋さん(170点): RANK.EQで5位。$B$2:B3 で170は1回目なので COUNTIF(…) は 1。よって 5 + 1 – 1 = 5位。

となり、同点の場合でも重複しない一意の順位を付けることができます。この例では登場順で差をつけていますが、応用すれば、特定の科目(副キー)の点数が高い方を上位にする、といった調整も可能です(ただし数式はより複雑になります)。

RANK関数の応用テクニック

RANK関数で順位を出した後は、他のExcel機能と組み合わせることで、さらにデータを分かりやすく見せることができます。

上位/下位〇位を抽出する (フィルター機能との連携)

RANK関数で順位を計算した後、Excelの「フィルター」機能を使えば、特定の順位のデータだけを簡単に抽出できます。

  1. 表のヘッダー行(氏名、点数、順位など)を選択します。
  2. 「データ」タブの「フィルター」をクリックします。
  3. 順位が表示されている列のフィルターボタン(▼)をクリックします。
  4. 「数値フィルター」から「トップテン…」や「指定の値より大きい/小さい」などを選択し、抽出したい順位の条件を指定します。(例:「上位」「3」「項目」でトップ3を抽出)

条件付き書式で順位を可視化

順位に応じてセルの背景色や文字色を変える「条件付き書式」を使うと、ランキング結果を視覚的に分かりやすく表現できます。

  1. 書式を設定したいセル範囲(例:順位の列)を選択します。
  2. 「ホーム」タブの「条件付き書式」をクリックします。
  3. 例えば、「上位/下位ルール」から「上位10項目…」などを選択し、書式を設定したい順位の数と適用する書式(背景色など)を選びます。

これにより、例えば上位3位までのセルを自動的に目立たせることができます。

RANK関数使用時の注意点とエラー対処

RANK関数を使っていると、意図しない結果になったり、エラーが表示されたりすることがあります。主な注意点とエラー対処法を知っておきましょう。

#N/A エラー

#N/A エラーは、「数値」で指定した値が、「参照」で指定した範囲内に存在しない場合に表示されます。

  • 原因: タイプミス、参照範囲の指定間違いなどが考えられます。
  • 対処法: 「数値」と「参照」の指定が正しいか、参照範囲内に目的の数値が含まれているかを確認してください。

#VALUE! エラー

引数に数値以外のデータ(文字列など)が含まれている場合などに発生することがあります。

  • 原因: 数値として扱えないデータが引数に含まれている可能性があります。
  • 対処法: 引数に指定しているセルや範囲に、数値以外のデータが含まれていないか確認してください。

絶対参照のつけ忘れ

前述の通り、オートフィルで数式をコピーする際に「参照」範囲を絶対参照($A$1:$A$10 など)にし忘れると、範囲がずれて正しい順位が計算されません。これは非常によくあるミスなので、RANK関数を使う際は常に意識しましょう。

RANK 関数 (旧バージョン) について

Excel 2007以前のバージョンでは RANK という名前の関数が使われていました。Excel 2010以降でも互換性のために残されていますが、今後は精度が向上し、機能が明確になった RANK.EQ または RANK.AVG を使用することが推奨されています。古いファイルを開いた場合などに RANK 関数を見かけるかもしれませんが、新規で作成する場合は RANK.EQ か RANK.AVG を使いましょう。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事