【Excel】RANK.EQ関数で順位を付ける方法と同順位の扱い方

この記事は約5分で読めます。

今回は、ExcelのRANK.EQ関数を使って数値に順位を付ける方法と、同じ値が並んだときの扱い方や、使いこなすためのコツを紹介します。

この記事は、Windows版のExcel for Microsoft 365を前提にしています。RANK.EQ関数自体は、Excel 2010以降の買い切り版やMac版、Web版でも利用できますが、画面の表示やメニューの位置は環境によって異なる場合があります。

RANK.EQ関数でできること

RANK.EQ関数は、数値のリストの中で、ある数値が何番目に大きいか(または小さいか)を返す関数です。売上の順位、テストの点数の順位、作業時間の短い順など、数値を比べて順番を付けたい場面で使えます。

並べ替えをしなくても順位を表示できるのが便利な点です。Microsoftのサポート情報でも、リストの並び順を変えても、その数値の順位は変わらないと説明されています。表の並びは入力順や名簿順のまま残しておき、順位だけを別の列に表示する、といった使い方に向いています。

RANK.EQ関数の書式

書式は次のとおりです。

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

  • 数値(必須):順位を調べたい数値
  • 範囲(必須):比較の対象となる数値の範囲(配列またはセル範囲の参照)
  • 順序(省略可):並べる方法の指定

順序の指定によって、順位の付き方が変わります。

  • 0を指定するか省略した場合:降順(大きい値ほど上位)
  • 0以外の数値を指定した場合:昇順(小さい値ほど上位)

売上や点数のように「大きいほど良い」データは順序を省略し、タイムや欠品数のように「小さいほど良い」データは順序に1を指定する、と覚えておくとわかりやすくなります。

基本的な使い方

例として、B2からB11に10人分の売上が入っている表で、C列に順位を表示する手順を見てみましょう。

  1. C2セルを選択する
  2. =RANK.EQ(B2,$B$2:$B$11) と入力してEnterキーを押す
  3. C2セルの右下のフィルハンドルをドラッグするか、ダブルクリックしてC11までコピーする

範囲は絶対参照にしておく

ここで大切なのが、範囲を$B$2:$B$11のような絶対参照にしておくことです。相対参照のB2:B11のままコピーすると、下の行に行くほど範囲が1行ずつずれてしまい、正しい順位になりません。範囲を選択したあとにF4キーを押すと、$記号をまとめて付けられます。

テーブルにしておくと範囲のずれを防げる

表をテーブルに変換している場合は、範囲に列の構造化参照を使う方法もあります。データの行を追加したときにも範囲が自動で広がるので、範囲の指定し直しを忘れて順位がずれる、といったミスを減らせます。

同じ値があるときの順位の付き方

RANK.EQ関数では、同じ数値は同じ順位として扱われます。その際は、同じ値のグループの中で最も上位の順位が返されます。

たとえば、降順で2番目と3番目に当たる値が同じだった場合、どちらも「2位」になります。そして次の値は「4位」となり、3位は欠番になります。スポーツの大会などでよく見る順位の付け方と同じ考え方です。

この仕組みを知らないと、「3位がいない」「順位の番号が飛んでいる」と戸惑うことがありますが、関数の仕様どおりの結果なので心配はいりません。

同順位を平均値で表したいときはRANK.AVG関数

同じ値のときに、順位を平均で表したい場合はRANK.AVG関数を使います。書式はRANK.EQ関数と同じで、=RANK.AVG(数値,範囲,[順序]) と入力します。

先ほどの例で2番目と3番目の値が同じなら、RANK.AVG関数では両方とも「2.5位」になります。

使い分けの目安は次のとおりです。

  • 表彰や成績表のように、同じ値に同じ順位を付けたい:RANK.EQ関数
  • 順位をもとに平均や分析をしたい:RANK.AVG関数

なお、以前からあるRANK関数は、旧バージョンとの互換性のために残されている関数です。新しく作るブックでは、目的がはっきりしているRANK.EQ関数またはRANK.AVG関数を使うと、数式の意図が後から読み取りやすくなります。

RANK.EQ関数を使いこなすコツ

同順位を出さずに連番で順位を付けたい場合

名簿の並び順や表示の都合で、同じ値でも1、2、3…と重複のない番号を付けたい場面もあります。そのときは、COUNTIF関数を組み合わせる方法があります。

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

COUNTIF関数の範囲を$B$2:B2のように始点だけ固定しておくと、下にコピーするにつれて範囲が広がり、「その行までに同じ値が何回出てきたか」を数えられます。これをRANK.EQ関数の結果に足すことで、先に出てきた行から順に番号が割り振られます。

数値以外のセルは無視される

範囲の中に文字列などの数値以外の値が含まれていても、順位の計算では無視されます。範囲内に「欠席」などの文字を入れておけば、その人を順位の計算から外せます。ただし、順位を求める「数値」の引数側に文字列のセルを指定するとエラーになるので、その行はIF関数で空欄を返すようにしておくなどの工夫をしておくと表がきれいに見えます。

見た目は数値でも文字列になっていないか確認する

ほかのシステムから貼り付けたデータでは、数値に見えても文字列として扱われていることがあります。その場合、そのセルは順位の計算対象から外れてしまいます。セルの左上に緑色の三角が出ていないか、配置が左寄せになっていないかを確認し、必要に応じて数値に変換しておきましょう。

上位の行を目立たせる

順位の列ができたら、条件付き書式で「順位が3以下のセル」に色を付けると、上位の行がわかりやすくなります。並べ替えをしなくても上位が目に入るので、元の表の並びを崩したくない場合に便利です。

まとめ

RANK.EQ関数を使うと、データを並べ替えなくても順位を表示できます。ポイントを振り返ります。

  • 書式は=RANK.EQ(数値,範囲,[順序])で、順序を省略すると降順、0以外を指定すると昇順
  • 範囲は絶対参照にしてからコピーする
  • 同じ値は同じ順位になり、次の順位は欠番になる
  • 同順位を平均で表したいときはRANK.AVG関数を使う
  • 重複のない連番にしたいときはCOUNTIF関数と組み合わせる

成績表や売上表など、身近な表から試してみて、目的に合った順位の付け方を選んでみてください。