Googleスプレッドシートの『RANK関数』は数値の集団から指定の数値が何番目に大きいか、もしくは小さいかを、返してくれる関数です。
「成績上位者を確認したい」「ミス率が低い順を確認したい」といったときに、有用です。
こんにちは。当ブログの管理人のくろんです。
30代サラリーマン、新規事業推進室に所属。仕事で身につけた業務効率化ノウハウをアウトプットしていきます。読んでくれた方の業務が一秒でも早く終わりますように!!
RANK関数とは
RANK関数は指定されたデータ範囲において、指定した値が、大きい順で何番目か、もしくは小さい順で何番目かを調べることができる関数です。
RANK関数の構文
RANK(値, データ, [降順])
項目 | 内容 |
値 | 順位を特定したい値。データのなかの一つのセルを指定することが多い。 |
データ | 値で指定した数値を含む、全体のデータ。配列または範囲を指定することが可能。 ちなみに、データの中に、指定した値が含まれていない場合は、「#N/A 」エラーが返されます。 |
[降順] | 【省略可】データ内で値が大きい順で何番目か知りたい場合は、「0」もしくは省略を。 反対に、値が小さい順で何番目か知りたい場合は、「1」を指定。 |
=rank(B2,$B$2:$B$21)
=rank(B2,$B$2:$B$21,1)
大きい順、小さい順のRANK関数はこのようになります。
小さい順のほうは、最後の引数の箇所に、小さい順を示す『1』を指定する必要があります。
また、データの範囲は、コピペしたときに動いてもらっては困るので、『$』をつけて絶対参照とします。
RANK関数の罠(同じ値だった場合)
さて、上図の赤い箇所を見て欲しいのですが、同じ点数だった場合、このように順位も同じになってしまいます。
これは『RANK関数』の仕様なので、しょうがないのですが、同じ点数だった場合に順位をちゃんとつけたいといったときも出てくるかと思います。
その場合は、『RANK関数』と『COUNTIF関数』を併用して、解決できます。
=RANK(B2,B$2:B$21,0)+countif(B$2:B2,B2)-1
RANK関数の部分までは同じですが、そのあとにCOUNTIF関数を組み合わせています。
どういうことかというと、このCOUNTIF関数では、データ内において、そのセル上部までの範囲に、同じ数字が何個あるかを調べる関数となっています。
数字が被りがなければ、『1』が返されますが、もしそのセル上部の範囲に同じ数字があった場合には、『2』『3』・・・と被っている個数だけ返ってくることとなります。これにより、同じ順位とならないようにしています。
なので、データの上にあるほうが順位が良くなります。
また、数字に被りがなかったときでも、COUNTIF関数で『1』が返されてしまうので、最後に1を引いてあげることで整合性を保っているといった感じです。
まとめ
RANK関数は、データにおいて、指定のセルの数字が何番目に大きいか、もしくは小さいかを調べる関数になります。RANK関数だけだと、同じ値は同じ順位となってしまいますが、COUNTIF関数を組み合わせることによって、別々の順位付を行うことができます。