RANK.EQ関数で順位をつける方法|絶対参照との組み合わせに注意

RANK.EQ関数で順位をつける方法|絶対参照との組み合わせに注意 情報通信ネットワークとデータの活用

テストの点数や売上のデータに「順位」を自動でつけたいとき、ExcelではRANK.EQ関数を使います。書き方自体はシンプルですが、コピーしたときに絶対参照にし忘れて順位がおかしくなる同じ順位が複数出てしまうといったつまずきが多い関数でもあります。

この記事では、RANK.EQ関数の基本の書き方と、絶対参照との組み合わせ方、さらに同順位を防ぐテクニックまで解説します。

RANK.EQ関数とは

RANK.EQ関数は、指定した範囲の中で、ある数値が何位にあたるかを返す関数です。似た名前の関数にRANKがありますが、RANK.EQは同順位の場合の扱いをより明確にした新しいバージョンで、現在はこちらを使うのが基本です。

RANK.EQ関数の書き方

RANK.EQ関数は次のように書きます。

=RANK.EQ(数値, 範囲, [順序])

引数意味
数値順位を求めたい値が入っているセル
範囲順位づけの対象となる数値がすべて入っている範囲
順序0または省略:降順(大きい値が1位)/0以外の数値:昇順(小さい値が1位)

テストの点数のように「点数が高いほど1位」としたい場合は、順序の引数は省略またはに0を指定すればOKです。

具体例

次のような点数データがあるとします(H列が点数)。

H(点数)K(順位)
1点数順位
280?
395?
470?
595?

K2セルに次の数式を入力し、K5までコピーします。

=RANK.EQ(H2, $H$2:$H$5)

範囲は絶対参照にする

この数式をコピーすると、「数値(H2)」は行ごとにH3、H4…とずれてほしいので相対参照のままにしますが、「範囲($H$2:$H$5)」は常に同じ表全体を見る必要があるため、絶対参照にしておく必要があります。もし範囲まで相対参照のままコピーしてしまうと、行がずれるごとに比較対象の表そのものがズレてしまい、正しい順位が計算できなくなります。

この例では、95点が2人(3行目・5行目)いるため、どちらも「1位」という結果になります。次点の80点は「3位」(2位が2人分先に埋まっているため)になります。

同順位を避けて連番の順位をつけたい場合

RANK.EQは、同じ値があると同じ順位を返します(上の例では95点の2人ともに1位)。しかし「1位、2位、3位、4位」のように、同じ値でも重複しない連番の順位をつけたい場面もあります。その場合は、RANK.EQにCOUNTIF関数を組み合わせる方法がよく使われます。

=RANK.EQ(M2, $M$2:$M$6) + COUNTIF($M$2:M2, M2) - 1

後半のCOUNTIF($M$2:M2, M2)の部分がポイントです。この範囲の指定は、開始位置($M$2)だけを絶対参照で固定し、終了位置(M2)は相対参照のままにしています。これを下の行にコピーすると、範囲は次のように少しずつ広がっていきます。

コピー先COUNTIFの範囲
3行目$M$2:M3
4行目$M$2:M4
5行目$M$2:M5

つまり「自分の行までの中で、自分と同じ値が何回目に登場したか」を数えることで、同じ順位の中でも上から順番に1、2、3…と枝番のようにズラすことができる、という仕組みです。このような「開始だけ固定し、終わりは相対参照のまま広げていく」参照の使い方は、拡張参照(成長する範囲)と呼ばれることもあります。

よくある間違い

  • 範囲(2番目の引数)を絶対参照にし忘れ、コピーするたびに比較対象の表がズレてしまう
  • 順序の引数を逆にしてしまい、点数が高いほど下位になってしまう(逆に、時間やタイムなど「小さいほど良い」データで順序を省略してしまうミスもある)
  • 同順位を連番にしたいときのCOUNTIFの範囲で、開始・終了の両方を絶対参照にしてしまい、範囲が広がらず正しく枝番がつかない

まとめ

RANK.EQ関数自体はシンプルですが、「範囲を絶対参照にする」「順序の引数を目的に合わせて指定する」という2点を押さえることが大切です。同順位を連番にしたい場合のCOUNTIFとの組み合わせは少し難しく感じるかもしれませんが、「開始だけ固定し、終わりは広げていく」という考え方を理解できれば応用が効くようになります。

以前紹介した「Excel演習ドリル」では、RANK.EQとCOUNTIFを組み合わせた参照のズレ方も選択式クイズで確認できます。この記事を読んだあとにぜひ挑戦してみてください。

Excel関数の確認ドリル記事はこちら

参照の考え方があやふやな人は、先にこちらの記事もあわせてご覧ください。

Excelの相対参照・絶対参照の違いとは?$マークの意味をわかりやすく解説

COUNTIFS関数で複数条件のデータを数える方法【高校情報対応】

コメント

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