特定の値やセルに含まれる数値が指定したデータ範囲内で何番目なのか知りたいと思うことはあると思います。そんな時に便利なRANK関数について解説します。
RANK関数の使い方
RANK関数はデータセット内の特定の値の順位を返す関数です。指定した値が、指定した範囲の中で、上から(下から)何番目に当たるのかの順位(ランキング)を返してくれます。
構文は下記のようになります。
=RANK(値, データ, [降順or昇順(省略可)])
値は順位を特定する値、データは検証するデータセットを含む配列または範囲、最後の降順か昇順かの指定は省略可能で、デフォルトは『0』で最大値が1番目(降順)になり、『1』にすると最小値が1番目(昇順)になります。
範囲内に値が入っていない場合は『#N/A』となり、エラー表示されます。
- 指定した値が、指定した範囲の中で、何番目なのかを返す
- 『値』と『データ範囲』と『降順か昇順』かを指定する
- 順番は省略可能でデフォルトは降順
- 範囲内に値以外のものが入っているとエラーになる
- ARRAYFORMULA関数と組み合わせるのが効率が良い
rank関数でランキングをつけてみる
例として国語、算数、英語のテストの合計点に順位をつけてみましょう。G列に順位が入ります。
単純にG列でrank関数を用いる場合は、最初の値で、合計点のセル『F3』を指定し、次の範囲ではランキングに反映される全員の合計点である『F3:F9』を指定します。今回は点数が高い順(降順)なので最後の指定は省略します。次の生徒からは最初の値のみ『F4』、『F5』と変えていきます。
=rank(F3,F3:F9)
これで順位が表示されました。
加藤さんと浜本さんは同じ259点なので同順位の2位となり、次は4位になっているのが確認できると思います。見るからに順位がおかしい場合はそれぞれの関数で指定している範囲がズレてる可能性が高いです。
求めた結果は達成できましたが、毎回人数分の関数を入力するのは効率が良くありません。
人によっては『G3』のセルの関数を『=rank(F3,F$3:F$9)』のように参照範囲を固定して、オートフィルで済ますという人もいるかもしれませんが、それでも母数が多ければ長いスクロールをしなければなりませんし、関数を使いすぎる事でスプレッドシートが重くなる原因となります。
RANK関数はARRAYFORMULA関数と組み合わせよう
ランキングをつける対象が少数の時は気にならないかもしれませんが、これが100件、1000件と増えるに当たって、作業効率や負荷が大幅に変わってきます。ここはスマートにARRAYFORMULA関数を組み合わせて、よりシンプルかつ効率のよい記述に変えましょう。
『G3』のセルに下記のように入力するだけで同じ結果が表示されます。
=ArrayFormula(rank(F3:F9,F3:F9))
ARRATFORMULA関数については別の記事で詳しく解説しています。
まとめ
順位を表示するrank関数について解説してきました。ARRAYFORMULA関数を組み合わせることでシンプルにする方法についても解説しましたが、関数を使用する時は数が増えたときのことを想定して、いかに効率よく、負荷がかからないようにするかも考えたいですね。
スプレッドシートの関数の基本的なものを紹介しています。
スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。