エクセルで、数値が範囲の中で何位かを求めるには RANK.EQ関数を使います。たとえば山田さんの売上 120 は、=RANK.EQ(C3,$C$3:$C$10) で 4 位と分かります。
同じ値があると同じ順位になり、次の順位は飛びます。この記事では、RANK.EQ関数の基本、同じ値のときの順位、RANK.AVG関数との違い、小さい順の順位、部署の中での順位、同じ順位を作らない方法、空欄の扱いまでを、1つの表で説明します。古い RANK関数は RANK.EQ関数と同じ結果です。下の練習ツールで、売上を書き換えて順位の変わり方を試せます。
RANK.EQ関数の書き方
| 引数 | 入れるもの | ポイント |
|---|---|---|
| 数値 | 順位を知りたい値(セル) | C3 など |
| 参照 | 順位を比べる範囲 | 下にコピーするので $C$3:$C$10 と絶対参照にします。 |
| 順序 | 0(省略)=大きい順、1=小さい順 | 点数・売上は省略、タイムなどは 1 にします。 |
まず動かしてみよう|この記事のサンプルをその場で試せます
練習用ファイルをダウンロードしなくても、記事と同じデータ・同じセル番地のサンプルをここで動かせます。黄色いセルを書き換えると、結果がその場で変わります。各解説の最後にある「▶ この式を試す」を押すと、このツールの該当セルへ移動します。
RANK.EQ関数の使い方|やりたいこと別の式
| やりたいこと | 式(例) | 結果 |
|---|---|---|
| 大きい順の順位 | =RANK.EQ(C3,$C$3:$C$10) | 4 |
| 同じ値の順位 | =RANK.EQ(C9,$C$3:$C$10) | 2 |
| 同じ値を平均の順位に | =RANK.AVG(C5,$C$3:$C$10) | 2.5 |
| 小さい順の順位 | =RANK.EQ(C7,$C$3:$C$10,1) | 1 |
| グループの中での順位 | =COUNTIFS($B$3:$B$10,B5,$C$3:$C$10,”>”&C5)+1 | 2 |
| 同じ順位を作らない | =RANK.EQ(C9,$C$3:$C$10)+COUNTIF($C$3:C9,C9)-1 | 3 |

大きい順の順位を求める
手順:F3 に RANK.EQ の式を入れて Enter
山田さんの売上(120)が、8 人の中で何位かを求めます。 F3 に次の式を入力して、Enter キーを押します❶。
=RANK.EQ(C3,$C$3:$C$10) C3$C$3:$C$10オレンジに順位を知りたいセル、青に全員の範囲(下へコピーするので $ で固定)を入れます。例:点数(D 列)の順位を下へコピー
=RANK.EQ(D2,$D$2:$D$40) - 3つ目に 1 を入れると、小さい順の順位になります。

確認:120 は 4 位だった

答えは 4 になりました❷。式は、次の順に計算しています。
- 120より大きい売上を数える
⇒ 200・150・150 の3つ - 3つの次なので
⇒ 4 位
同じ値は同じ順位になる
鈴木さんと渡辺さんはどちらも 150 なので、どちらも 2 位です。次の山田さんは3位ではなく4位になります。
▶ この式(F4)を、練習ツールで試す / この式(F5)を、練習ツールで試す
同じ値を平均の順位にする(RANK.AVG)
2位と3位を分け合うので、(2+3)÷2 で 2.5 位です。統計で順位を使うときに使われます。
小さい順の順位を求める
3つ目の引数に 1 を入れると、小さいほうが1位になります。
田中さんの 60 はいちばん小さいので 1 位です。
部署(グループ)の中での順位を求める
RANK.EQ関数には条件を付けられないので、COUNTIFS関数で「同じ部署で自分より大きい人の数+1」を数えます。
=COUNTIFS($B$3:$B$10,B5,$C$3:$C$10,">"&C5)+1
営業の売上は 120・150・60・200 で、150 より大きいのは 200 だけなので、鈴木さんは営業の中で 2 位です(COUNTIFS関数の使い方)。
同じ順位を作らない(上の行を先にする)
同じ値のとき、上の行の人を先にして順位を1つずつずらします。COUNTIF関数の範囲を $C$3:C9 のように自分の行まで広げるのがポイントです。
=RANK.EQ(C9,$C$3:$C$10)+COUNTIF($C$3:C9,C9)-1
渡辺さんより上に 150 がもう1つ(鈴木さん)あるので、2+2−1 で 3 位です。鈴木さんの行で同じ式を使うと 2 位のままです。
空欄の人は順位を表示しない
空欄のセルを RANK.EQ関数に渡すと #N/A エラーになります。IF関数で空欄のときは何も表示しないようにします。
伊藤さんの売上は空欄なので、結果は空白です。
RANK.EQ関数がうまくいかないときの確認表
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| コピーすると順位がおかしい | 範囲が相対参照でずれた | $C$3:$C$10 のように絶対参照にする。 |
| 「#N/A」になる | 数値が空欄・文字、または範囲に入っていない | IF関数で空欄を除く。範囲を確かめる。 |
| 同じ順位が出る | 同じ値は同じ順位になる | COUNTIF関数を足して順位をずらす。 |
| 小さいほうを1位にしたい | 順序を省略すると大きい順 | 3つ目の引数に 1 を入れる。 |
RANK.EQ関数のよくある質問
RANK関数との違いは?
RANK関数は古いバージョンとの互換用で、RANK.EQ関数と同じ結果になります。新しく作るときは RANK.EQ関数を使います。
順位から名前を出すには?
LARGE関数と INDEX・MATCH関数を組み合わせます(LARGE関数の使い方)。
あわせて読みたい:順位の関連記事
練習用ファイル:練習用Excelファイル(.xlsx・無料)
