10/05/2018

Excel。条件付き順位は、RANK.EQ関数ではなくてCOUNTIFS関数で作ります【RANK】

Excel。条件付き順位は、RANK.EQ関数ではなくてCOUNTIFS関数で作ります

<RANK.EQ関数・COUNTIFS関数>

Excelはバージョンを重ねるごとに、
より一層様々な処理が簡単にできるようになってきています。

例えば関数ならば、条件付き最大値を算出することができる、
「MAXIFS関数」という関数もOffice365のExcel2016で登場してきました。

ところが、簡単に、できそうでできないものの中に、
今回ご紹介する【条件付き順位】があります。

どのようなものなのか確認していきましょう。
次の表があります。

E列のクラス別順位をどうやって算出したらいいのかというのが
今回の条件付き順位です。

D列の全体順位は、
おなじみのRANK.EQ関数を使うことで簡単に算出することができますね。

ちなみに、D2の数式は、
=RANK.EQ(C2,$C$2:$C$16,0)
となっています。

このRANK.EQ関数のポイントは、
参照=範囲が絶対参照にすることを忘れないことと、
順序をベストなのかワーストなのかによって数値が変わってくる点ですね。

ところがこのRANK.EQ関数。

引数を見ていただいて、おわかりのように、条件なんてものはありません。

なので、条件付き順位を算出したい場合には、
RANK.EQ関数では算出することができません。

そこで、登場するのが、COUNTIFS関数なのです。

【条件付き順位は発想を変えてCOUNTIF関数で算出】

クラス別順位のE2の数式を確認してみましょう。

=COUNTIFS($B$2:$B$16,B2,$C$2:$C$16,">"&C2)+1

最後の「+1」は除いて、COUNTIFS関数をまずは確認してみましょう。

検索条件範囲1には、クラスを範囲選択しますので、$B$2:$B$16

検索条件1には、検索条件範囲1の中から該当させる条件なので、
自分自身のクラスが条件に該当しますので、B2のクラス=3

ここまでで、クラスが3でという条件ができました。

検索条件範囲2には、得点を範囲選択しますので、$C$2:$C$16
検索条件2には、自分自身の得点よりも大きいかどうかを判断させます。

“より大きい”なので、比較演算子は、
「>」ですが「>C2」とすることができません。

比較演算子とセルを結合させるには、
「&」を使いますので、 ">"&C2 と入力します。

結局、この2つの検索条件で
「クラス3で、自分の得点よりも大きいもの」
という意味になります。

その条件に合致する件数を算出すれば、おのずと条件付き順位となるわけです。

=COUNTIFS($B$2:$B$16,B2,$C$2:$C$16,">"&C2)+1の最後にある
「+1」の説明をしていきます。

とりあえず、
「+1」を除いた数式をオートフィルでコピーした結果を確認してみましょう。

E3やE16は、0(ゼロ)が算出されてしまっています。

要するに、自分の得点よりも大きい件数がない、
つまり、そのクラスで一番大きな値であるということがわかるわけです。

なので、順位は1位なのですが、
今の時点では、0(ゼロ)になっているので、「+1」する必要があるので、

=COUNTIFS($B$2:$B$16,B2,$C$2:$C$16,">"&C2)+1
という数式になったわけです。

このように、決まった関数で、
うまく算出できない時には、かわりになる算出方法を見つけられるといいですよね。