エクセルのrank,large,smallなどの順位付け関数

表計算ソフトのエクセルには、統計処理関係の関数が数多く用意されている。 たくさんの数字列の順位付けをするには、普通はrank関数を使うのだが、同点の場合、同順位となり、それ以降の順位が繰り下がって割り振られる仕様になっている。 たとえば、以下のような点数の場合、2位が2件、3位が0件、4位が1件ということになる。

85 2位 
85 2位
90 1位
70 4位 

意外と、この仕様は使いにくく、実際には、同点の場合でもとりあえず別の順位をつけたいことがある。 たとえば、同点の場合は、先着順にするとかにして、以下のようにしたいことがある。

85 2位 
85 3位
90 1位
70 4位 

このような順位の振り方はrank関数にはなくて、行番号*0.001などの数値を点数に含めるなど、トリッキーなやり方をしなければならない。

これを解消するのが、large関数やsmall関数で、これは、数字列の中で指定した順位のセルを返してくれる。

たとえば、上記の数値の上位2件の平均を求めたいときなどは、

average( (large(範囲,1) + large(範囲,2) )

とすれば、(90+85)/2 が返ってくる。 smallは小さい値からの順番を持ってくる。

たとえば、オリンピックの体操やフィギュアスケートの点数計算のように、最高点と最低点を除いた平均などは、

( (sum(範囲) - (large(範囲,1) - small(範囲,1) ) / (count(範囲) - 2)

などとしてやればいい。

 
blog/エクセルのrankやlargeやsmallなどの順位付け関数.txt · 最終更新: 2009/07/24 19:02 by kuha     文書の先頭へ