「売上ランキングを自動で表示したい」「成績順位をExcelで管理しているが同点の場合の処理がうまくいかない」「RANK関数とRANK.EQ・RANK.AVG関数の違いがわからない」——Excelで順位付け処理を行う場面でこうした課題が出てきます。
ExcelのRANK関数(およびRANK.EQ・RANK.AVG関数)を使えば、数値の大小に基づいた順位を自動計算できます。売上ランキング・成績順位・在庫回転率など、データ分析や報告資料に欠かせない処理です。特に「同順位(タイ)をどう扱うか」という実務上の要件に応じて関数を使い分けることが重要で、COUNTIF関数との組み合わせで連番順位を割り振るテクニックも覚えておくと仕事の幅が広がります。MOS Excel試験でも順位関数は出題範囲に含まれており、関数の引数の意味と動作の違いを正確に理解しておく必要があります。本記事では、RANK・RANK.EQ・RANK.AVG関数の基本構文・昇順/降順の指定・同順位処理・グループ内ランキング・実務パターンとMOS試験対策まで2026年最新版で徹底解説します。
「売上・成績・在庫データの順位を自動で更新したい」「MOS試験のRANK問題を確実に得点したい」という方は、ぜひ最後までお読みください。
RANK・RANK.EQ・RANK.AVG関数の概要と違い
Excelには順位を返す関数が3種類あります。RANK関数はExcel 2007以前から存在する旧来の関数で、Excel 2010以降ではRANK.EQとRANK.AVGに分割されました。互換性のためRANK関数は現在のExcelでも使えますが、新規作成するファイルではRANK.EQまたはRANK.AVGを使うことが推奨されます。
| 関数名 | 同順位の扱い | Excel対応バージョン | 備考 |
|---|---|---|---|
| RANK | 同順位は上位の順位を返す(RANK.EQと同じ) | Excel 2007以前~ | 後方互換用。新規作成では非推奨 |
| RANK.EQ | 同順位はすべて最上位の順位を返す | Excel 2010~ | 「EQ」は Equal(等しい)の略 |
| RANK.AVG | 同順位は占有する順位の平均を返す | Excel 2010~ | 「AVG」は Average(平均)の略 |
たとえば80点が2人いて本来3位と4位を占める場合、RANK.EQは両者に「3」を返し(4位は欠番)、RANK.AVGは両者に「3.5」(3と4の平均)を返します。この違いが実務上どの場面で重要になるかは後述します。
基本構文と引数の読み方
3つの関数はすべて同じ引数構造を持っています。
| 引数 | 意味 | 省略 | 指定例 |
|---|---|---|---|
| 数値(第1引数) | 順位を求める対象の数値またはセル参照 | 不可 | B2 |
| 参照(第2引数) | 順位を比較するデータ範囲 | 不可 | $B$2:$B$11 |
| 順序(第3引数) | 0または省略=降順、1=昇順 | 可(省略時は降順) | 0 または 1 |
第2引数は複数のセルにコピーして使うことがほとんどなので、絶対参照($B$2:$B$11のように$を付ける)にすることが必須です。相対参照のままコピーすると範囲がずれて誤った順位が返されます。
降順ランキングの例(売上上位を1位から並べる)
A列に担当者名、B列に売上金額が入っている場合、C2に次の数式を入力してC列全体にコピーします。
=RANK.EQ(B2,$B$2:$B$11,0)
第3引数に0を指定することで売上が大きいほど順位が小さい(1位が最大値)降順になります。売上ランキング・得点ランキングなど「大きい値が上位」になる場面では降順(0)を使います。
昇順ランキングの例(タイムが短いほど上位)
マラソンのタイムや処理時間など「小さい値が上位」になる場面では第3引数に1を指定して昇順にします。
=RANK.EQ(B2,$B$2:$B$11,1)
最も小さい値に1位が割り当てられ、大きくなるほど順位が下がります。
RANK.EQとRANK.AVGをどちらに使い分けるか
同順位の扱い方が実務要件に直結するため、どちらを使うかは目的に応じて選択します。
| シーン | 推奨関数 | 理由 |
|---|---|---|
| 社内売上ランキング表示 | RANK.EQ | 「何位タイ」として表示しやすく、整数で順位が一覧に収まる |
| 成績・評価の統計処理 | RANK.AVG | 統計学的な百分位計算に用いるとき、平均順位が必要な場合 |
| XLOOKUP等で順位→名前を検索 | RANK.EQ | 整数値のため他関数との組み合わせが容易 |
| Excelの統計分析ツールとの連携 | RANK.AVG | 重みなし平均順位として使われる統計指標と整合する |
| MOS試験・学習用 | RANK.EQ(主)RANK.AVG(副) | 両方の構文と差異を理解しておくことが求められる |
日常業務では整数が返るRANK.EQの利用頻度が高いため、まずRANK.EQをマスターしてからRANK.AVGの差異を理解するという順序で学習することをおすすめします。
同順位を連番で割り振るCOUNTIF組み合わせテクニック
RANK.EQは同順位を同じ順位値で返すため、「3位が2人いると4位が欠番になる」という特性があります。順位に抜けを作らず1位・2位・3位……と連番で割り振りたい場合は、COUNTIF関数と組み合わせることで実現できます。
C2に次の数式を入力してコピーします。
=RANK.EQ(B2,$B$2:$B$11,0)+COUNTIF($B$2:B2,B2)-1
この数式の仕組みを解説します。RANK.EQで基本順位を算出し、COUNTIF($B$2:B2,B2)で「現在の行まで」に同じ値が何個あるかを数えます。同じ値が初めて出てくる行では1が返り、-1すると差分が0になるため基本順位がそのまま使われます。同じ値が2番目に出てくる行では2が返り、-1すると+1になって順位が1つ下がります。これにより同じ値であっても上の行から順に連番が割り振られます。
| 行 | 売上金額 | RANK.EQ単体 | COUNTIF($B$2:B?,B?)の結果 | 連番順位 |
|---|---|---|---|---|
| 2行目 | 120万円 | 1 | 1(初出) | 1+1-1=1 |
| 3行目 | 98万円 | 2 | 1(初出) | 2+1-1=2 |
| 4行目 | 85万円 | 3 | 1(初出) | 3+1-1=3 |
| 5行目 | 85万円(同値) | 3 | 2(2個目) | 3+2-1=4 |
| 6行目 | 70万円 | 5 | 1(初出) | 5+1-1=5 |
ただしこの連番割り振りはデータの並び順に依存するため、「どちらが上位か」を追加条件(氏名のアルファベット順、入力日順など)で明確にしておく必要があります。
グループ内ランキング:部署別・カテゴリ別に順位を付ける
「東京支店だけの売上ランキング」「商品カテゴリ別の在庫回転率順位」のように、全体ではなく特定グループ内での順位が必要な場面があります。この場合はCOUNTIFS関数を組み合わせることで実現できます。
A列に支店名、B列に担当者名、C列に売上金額が入っている場合、D2に支店内順位を求める数式です。
=COUNTIFS($A$2:$A$100,A2,$C$2:$C$100,">"&C2)+1
この数式は「同じ支店名で、かつ現在の売上より大きい値が何件あるか」をカウントして+1することで順位を求めています。RANK関数を使わずCOUNTIFSだけで実装するため、グループ条件を柔軟に追加できます。
| ランキング要件 | COUNTIFS条件 | 用途例 |
|---|---|---|
| グループ内降順(大きいほど上位) | $C$2:$C$100,”>”&C2 | 支店内売上ランキング・部署内得点順位 |
| グループ内昇順(小さいほど上位) | $C$2:$C$100,”<“&C2 | グループ内処理時間・コスト順位 |
| 複数グループ条件 | $A$2:$A$100,A2,$B$2:$B$100,B2,”>”&C2 | 支店×商品カテゴリ別ランキング |
実務シナリオ別の活用パターン
パターン1:売上ランキング表の自動更新
売上データが更新されるたびに順位が自動計算されるランキング表を作るには、RANK.EQ関数をランキング列に設定し、XLOOKUP(またはINDEX・MATCH)でランキング順に名前と値を別表に取り出す構成が便利です。元データを並べ替えずに順位表を自動生成でき、データ追加時も範囲を広げるだけで対応できます。
パターン2:条件付き書式でTOP3を自動ハイライト
売上や成績のセル範囲に条件付き書式を設定し、条件として「=RANK.EQ(B2,$B$2:$B$11,0)<=3」(上位3位以内)を入力することで、順位に応じたセルを自動でハイライトできます。データが更新されると条件付き書式もリアルタイムで反映されるため、手動の色付けが不要になります。
パターン3:ピボットテーブルとの組み合わせ
ピボットテーブルで集計した結果を別シートの作業エリアに値として貼り付け、そこにRANK.EQ関数で順位列を追加するパターンが実務でよく使われます。ピボットテーブルの集計値は直接RANK.EQの範囲として参照できますが、フィルタや集計の変更で行数が変わる場合は参照範囲をテーブル化しておくことで対応できます。
パターン4:RANK.AVGとパーセンタイルランクの併用
RANK.AVGをPERCENTRANK.INC関数と組み合わせると、「全体の何%より上位か」を示すパーセンタイル順位も計算できます。成績の相対評価や営業成績のポジション把握など、単純な順位だけでは表現しにくい相対位置の可視化に役立ちます。
MOS Excel試験でのRANK関数の出題傾向
MOS Excel(Microsoft Office Specialist Excel)試験では、RANK.EQおよびRANK.AVG関数が「数式と関数」スキルセットの範囲として出題されます。
| 出題パターン | 具体的な内容 | 注意点 |
|---|---|---|
| RANK.EQの基本入力 | 指定セルの値を指定範囲で降順ランク付けする数式を入力する | 第2引数の絶対参照($付き)を確認する |
| RANK.AVGとRANK.EQの選択 | 「同順位を平均で返す」指示でRANK.AVGを選択する | EQとAVGの動作の差を正確に理解しておく |
| 昇順・降順の切替 | 第3引数に0(降順)または1(昇順)を指定する | 省略時は降順になることを確認する |
| オートフィルでのコピー | 数式を入力後に他のセルへコピーして正しい順位が表示されるか確認する | コピー後に参照がずれていないか必ず確認する |
MOS試験対策の練習方法
10行程度のサンプルデータ(売上金額や得点)を用意し、RANK.EQ・RANK.AVGを両方入力して同順位のある場合に返される値の違いを実際に確認することが最も効果的な学習方法です。特に第2引数の絶対参照を意図的に相対参照にした場合にどうなるか(参照がずれて誤った順位になる)も体感しておくと、試験中の確認ポイントとして役立ちます。また昇順(1)と降順(0)を両方試し、どちらの指定で何位が最大値・最小値になるかを確認しておきましょう。
よくあるエラーとトラブルシューティング
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #N/Aエラーが返る | 第1引数の数値が第2引数の範囲に含まれていない | 第2引数の範囲が第1引数のセルを含んでいるか確認する |
| コピー後に順位がおかしい | 第2引数が相対参照のままコピーで範囲がずれた | 第2引数を$B$2:$B$11のように絶対参照にする |
| 同順位なのに順位が変わる | 第3引数の0(降順)と1(昇順)を誤って指定している | 大きい値を上位にするなら0(省略)を指定する |
| 数値のつもりが文字列扱いになっている | 数値に見える文字列がセルに入っている(左揃え表示) | VALUE関数で数値変換するか、セルの書式を数値に変更する |
| RANK.EQが見つからない | 古いバージョンのExcelではRANK関数のみ存在する | Excel 2010以降で作業する、またはRANK関数で代替する |
まとめ:RANK.EQとRANK.AVGで順位付けを自在に制御しよう
RANK・RANK.EQ・RANK.AVG関数の基本構文と使い分けを理解することで、売上・成績・在庫データの順位付けを自動化し、手作業による入力ミスや更新漏れを防げます。
- RANK.EQは同順位に同じ整数を返し(上位順位を返す)、日常業務のランキング表に適する
- RANK.AVGは同順位に占有順位の平均(小数)を返し、統計処理が必要な場面に適する
- 第2引数は絶対参照で指定しないとコピー時に順位がずれる
- COUNTIF組み合わせで連番順位を割り振り、同順位による欠番をなくせる
- COUNTIFSとの組み合わせで部署・カテゴリ別のグループ内ランキングも実現できる
- MOS試験ではRANK.EQとRANK.AVGの構文・昇順/降順の引数・同順位動作の差が出題範囲
RANK.EQで基本のランキング処理を確実に動かせるようになったら、COUNTIFS組み合わせのグループ内ランキングや条件付き書式との連携にも挑戦してみてください。データが自動で順位付けされる仕組みを一度作ると、毎回の手作業が大幅に減り、MOS試験の学習でも関数の動作原理を深く理解できるようになります。
