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