「順位付けはコレ!RANK関数、RANK.EQ関数、RANK.AVG関数」では、順位を付ける関数が下記のように3つもあり、これら3つの関数とも、引数の設定の仕方は同じだよということをご紹介しています。
- RANK関数
- RANK.EQ関数
- RANK.AVG関数
でも、実際問題、同じ用途の関数が3つもあると、どれを選んでいいか悩むわけです。
というわけで、今回は上の図のような表を使って、3つの関数の違いをまとめていきたいと思います!
このページでは、RANK関数、RANK.EQ関数、RANK.AVG関数の違いだけをまとめていきますので、「そもそも、この関数の設定方法が分からない!」という方は、まずは「順位付けはコレ!RANK関数、RANK.EQ関数、RANK.AVG関数」をご覧ください。
まずは3つの関数を設定してみよう!
まずはRANK関数、RANK.EQ関数、RANK.AVG関数をそれぞれ設定してみましょう。
C4番地に、「阿部さんの販売個数は、みんなの中で、大きいほうから数えて何位なのか?」をRANK関数を使って設定します。
というわけで、C4番地の数式はこうなります。
設定方法や、この数式の意味が分からない方は、まずは焦らず「順位付けはコレ!RANK関数、RANK.EQ関数、RANK.AVG関数」をご覧ください。
同じく「阿部さんの販売個数は、みんなの中で、大きいほうから数えて何位なのか?」を、今度はD4番地にRANK.EQ関数を使って設定します。
D4番地のRANK.EQ関数の数式はこうなります。
これまた同じく「阿部さんの販売個数は、みんなの中で、大きいほうから数えて何位なのか?」を、今度はE4番地にRANK.AVG関数を使って設定します。
E4番地のRANK.AVG関数の数式はこうなります。
残りのセルにも数式を入力していきましょう!
いちいち設定していくのは面倒なので、先ほど数式を設定したC4からE4番地を範囲選択し、
オートフィルすれば、
残りのセルにも簡単に数式を設定することができました!
今回の例で使用した表では、オートフィル終了後、書式が崩れないようにするため、[オートフィルオプション]ボタンを使わなきゃいけないのですが、これは今回のRANK関数とは何の関係もないので、何のことを言ってるのかさっぱりわからないという方は、「書式なしでオートフィル」をご覧ください。
スポンサーリンク
3つの違いはExcelの歴史に隠されています
RANK関数、RANK.EQ関数、RANK.AVG関数の違いは、Excelの歴史に隠されています。
実は、Excel 2007まではRANK関数しか存在しなかったので、この時点ではRANK.EQ関数、RANK.AVG関数はありませんでした。
ところが、同じ数字の人がいた場合は、当然同じ順位となるわけですが、この同じ順位だった場合の表示の仕方を変えるため、従来のRANK関数を、Excel 2010で2つに分けます。
そこで生まれたのが、RANK.EQ関数とRANK.AVG関数です。
RANK.EQ関数は、従来のRANK関数と全く同じです。
Excel 2010で、順位を付ける関数を2分割したので、従来のRANK関数と同じだけど、新しい感を醸し出すため、RANK.EQ関数という風に名を改めた感じでしょうか。
なので、上の図の表でも、RANK関数とRANK.EQ関数では、同じ販売個数だった時の結果が全く同じです。
3位が二人いたため、4位が無くなり、二人とも3位という表示になっています。
ところが、RANK.AVG関数は順位の出し方が違います!
3位と4位のポジションが、同じ販売個数だったため、3位と4位の真ん中を取って「3.5位」となります。
RANK.AVG関数の「AVG」は「アベレージ」、つまり「平均」のことです。
3と4の平均は3.5なので、「3.5位」となったわけです。
再びRANK関数とRANK.EQ関数を見てみることにしましょう。
今度は、8位が三人いたため、9位と10位が無くなり、三人とも8位という表示になっています。
ところが、RANK.AVG関数は、8位と9位と10位のポジションが同じ販売個数だったため、真ん中を取って「9位」としています。
8と9と10の平均が9なので、「9位」となったわけです。
というわけで、これをまとめると、
RANK関数とRANK.EQ関数は同じ。
同じものなのに名前が違うのは、Excelの歴史が関係しているから。
RANK.AVG関数は、同じ数字だった場合に、順位の表示の仕方が違う
スポンサーリンク
RANK.EQ関数とRANK.AVG関数をExcel 2007で見ると
最初にご紹介した通り、RANK.EQ関数とRANK.AVG関数は、Excel 2010で新たに登場した関数です。
つまり、Excel 2007以前には存在しなかった関数なわけです。
じゃぁ、この2つの関数が設定された文書を、Excel 2007で開いてみるとどうなるのか?
こうなります!
上の図みたいに見えます。
あれ?存在しない関数が設定されているはずなのに、なんかちゃんと順位を割り出して表示してくれているように見えるではありませんか!
でもですね、Excelさんはちゃんと訴えております。
Excel 2007の当時には存在しなかった、RANK.EQ関数とRANK.AVG関数が設定されているセルならどれでもいいので、どれか1つのセルを選択して数式バーを見ると、関数名の前に何やら「_xlfn.」なる表示が!
こうして数式の関数名の前に「_xlfn.」と表示することで、Excelさんは「この関数は自分のバージョンでは無理っす」と静かにアピールしてます。
でも、この静かなるアピールは最初だけ。
販売個数のデータを修正するなどして、再計算が行われると、がっつりエラーメッセージを表示してきます!
「#NAME?」は、「そんな関数の名前、知らん!」というエラーメッセージ。
そりゃぁ、Excel 2007までは存在しなかったわけですから、知らなくても当然です。
だって未来から来た関数ですもの。
というわけで、
バージョン2007以前のExcelでも開かれる文書の場合には、RANK関数しか使えない
結局、どれを使えばいい?
ここまでご紹介してきたように、違いが出てくるのは、
- 同じ数字だった時の順位の出し方
- Excel 2007以前で使う必要があるかどうか
という2点だけなので、これがしっかり決まっている方は「この関数を使えばいいな」って、使う関数を決定できます。
でも、「Excel 2007以前で使うことは無いよ」という方にとって悩ましいのは、RANK関数とRANK.EQ関数のどちらを使うか。
RANK.AVG関数は、同じ数字があった時の順位の出し方が、これら2つの関数と決定的に違うので、悩むことはありませんが、RANK関数とRANK.EQ関数は順位の出し方が同じですから悩みます。
もうこれはお好きな方をどうぞ、という感じでいいのではないかと個人的には思います。
RANK.EQ関数は、RANK.AVG関数と区別するために新しくできたものなので、時代の流れに乗ってRANK.EQ関数の方がいいのかなぁと思ったりするものの、昔からExcelを使っている人にとっては、RANK関数の方が親しみやすい気もしますし。
なので、バージョン2007以前のExcelを使う必要の無い方が、RANK関数とRANK.EQ関数の2拓で迷った場合には、周りの好みと自分の好みのバランスを見て、好きな方を決めちゃっていいんじゃないかなと思っております。