営業成績のランキング表や、試験・研修の点数から順位を出す表は、経理・総務・営業事務を問わず社内で頻繁に作られます。こうした「数値の大小から順位を求める」作業を1本の数式で済ませてくれるのがRANK関数、そしてその後継であるRANK.EQ関数です。書き方自体はシンプルですが、下の行にコピーしたときに参照範囲がずれてしまうミスや、同点者が出たときに順位が予想外の飛び方をする挙動など、初めて使う人が戸惑いやすいポイントがいくつかあります。この記事では、営業事務・総務の実務シーンに沿って、RANK・RANK.EQの使い方とよくあるトラブルを解説します。
RANKとRANK.EQ、どちらを使えばいい?
Excelには順位を求める関数として、古くからあるRANKと、Excel 2010以降に追加されたRANK.EQの2つが存在します。この2つは引数の構成も計算結果もまったく同じで、単純に呼び名が変わっただけです。RANKは以前のバージョンとの互換性のためにExcelに残されている旧式の関数という位置づけで、マイクロソフト自身も将来のバージョンで使えなくなる可能性があると案内しています。そのため、これから新しく数式を組むのであればRANK.EQを使うのが無難です。すでにRANKで組まれた既存のシートを見つけても、動作に問題がなければ急いで書き換える必要はありません。
基本の書き方と順序引数の意味
RANK.EQは「順位を求めたい数値」「比較する範囲」「順序」の3つの引数を取ります。順序は0(または省略)で降順、1で昇順になります。
例:C2セルの売上金額を、C2:C11の範囲の中で大きい順(降順)に順位づけする
=RANK.EQ(C2,$C$2:$C$11,0)
順序 0(省略)
- 降順=数値が大きいほど1位
- 売上ランキング、試験の得点など「大きいほど良い」場合に使用
順序 1
- 昇順=数値が小さいほど1位
- 競技のタイム、不良品数など「小さいほど良い」場合に使用
RANK.AVG
- 同点に平均順位を付与
- 1位が2人なら1.5位・1.5位のように返す
「大きい値を1位にしたいのに、順序を1にしてしまい結果が逆になった」という間違いは非常に多く見られます。0と1の意味は感覚と逆に覚えている人も多いため、数式を入れた直後は必ず1位・最下位が想定通りの人になっているか目視で確認する習慣をつけると安心です。
実務でのよくある使用シーン
営業事務担当者であれば、月末に営業担当者10名分の月間売上をC2:C11に集計し、D列にRANK.EQで順位を出して、社内共有用のランキング表を作成するのが典型的な使い方です。「今月のトップ3」を会議資料に転記したり、インセンティブの対象者を判定したりする根拠として使われます。総務担当者であれば、社内研修や昇格試験の点数を一覧にまとめ、受験者30名の中での順位を出して、成績上位者への表彰や、逆に点数が低い層への補講対象の判定に利用する場面がよくあります。どちらのケースも、対象者が増減するたびに範囲がずれないよう、後述する絶対参照の指定が重要になります。
RANK・RANK.EQでよくあるエラー・トラブルと対処法
最もよくあるミスです。範囲を絶対参照($)で固定せずにコピーすると、行ごとに比較範囲がずれてしまいます。
→ D3では自動的に範囲がC3:C12にずれ、D11では範囲がC11:C20(大半が空欄)にずれてしまう
対処法は、範囲の部分だけを$C$2:$C$11のように行と列を両方固定することです。=RANK(C2,$C$2:$C$11,0)としてからコピーすれば、どの行でも比較範囲は常に同じC2:C11のままになります。範囲がずれた結果、比較対象の数値自体が範囲の外に出てしまうと#N/Aエラーになることもあるため、コピー後は最終行の数式を数式バーで確認する癖をつけましょう。
「2位が存在しないのはおかしいのでは」と不安になりがちですが、これはRANK・RANK.EQの仕様であり、数式が壊れているわけではありません。
RANK・RANK.EQは「自分より大きい(または小さい)数値が何個あるか」を数えて順位を決めるため、同点の人数分だけ次の順位が繰り上がります。この動きに違和感がある場合や、同点者に「1.5位」のような平均順位を与えたい場合は、RANK.AVG関数への切り替えを検討してください。
数式自体はエラーにならず正常に計算されるため、かえって気づきにくいミスです。
エラーが出ないため、順位の列を目視で確認しない限り気づかないまま資料として配布してしまう危険があります。売上・得点など「大きいほど上位」の場面では順序を0または省略、タイムなど「小さいほど上位」の場面でのみ1を指定する、とルールを決めておくと安全です。
初心者がつまずきやすいポイントとコツ
- 範囲は必ず絶対参照($)で固定する。下の行にコピーして使うことが前提の関数なので、範囲部分に$を付け忘れるとほぼ確実にずれます。範囲をドラッグで選択した直後にF4キーを押して固定する習慣をつけましょう。
- 順序引数の0と1の意味は逆に覚えやすい。0(省略)は「大きい値が1位になる降順」、1は「小さい値が1位になる昇順」です。売上や点数のランキングでは基本的に0(省略)を使うと覚えておくと迷いません。
- 同順位が出て順位が飛ぶのは仕様であり不具合ではない。1位が2人いれば次は3位になるのが正しい動作です。連番のような順位が必要な場合はRANK.AVGや、順位が重複しないよう別途タイブレーク用の値を加える工夫が必要です。
- RANKよりRANK.EQを優先して使う。計算結果は同じですが、RANKは将来的に廃止される可能性がある旧式関数のため、新規に作る数式ではRANK.EQを選びましょう。
まとめ
RANK・RANK.EQ関数は、営業成績や試験の点数から順位表を作る際に欠かせない関数です。範囲を絶対参照で固定してコピーによるずれを防ぐこと、順序引数の0(降順)と1(昇順)の意味を取り違えないこと、そして同点で順位が飛ぶのは仕様であり必要なら平均順位が出せるRANK.AVGに切り替えることの3点を押さえておけば、実務でのトラブルはほとんど防げます。これから数式を組む場合は、旧式のRANKではなく後継のRANK.EQを使うのが安心です。数式を一から組み立てるのが不安な方は、下のツールで日本語の空欄を埋めるだけで数式を作成できます。
よくある質問
関連記事
- LARGE・SMALL関数で上位・下位ランキングを抽出する方法
- MAX・MINとLARGE・SMALLの違いは?最大値・最小値を求める関数の使い分けガイド
- SUBTOTAL関数でフィルター後の合計を正しく出す方法
- SUMIFとSUMIFSの違いは?条件付き集計でよくあるエラーと使い分け