4/29/2021

Excel。条件付き順位は発想を変えると簡単に算出することができます。【Conditional ranking】

Excel。条件付き順位は発想を変えると簡単に算出することができます。

<COUNTIFS関数>

店舗番号順の売上表があります。


算出したいのは、E列の「地区別順位」です。


順位ということで、使う関数は、「RANK.EQ関数かな?」と思い浮かぶかもしれませんが、残念ながら、RANK.EQ関数は、全体の中で何番目というように、「全体の中」なので、今回のように、地区別順位。

つまり、条件付き順位は、算出することができません。


RANK.EQ関数をつかうとしたら、範囲選択を地区ごとに分けて行って、その範囲内で順位を算出するようになります。


地区ごとにまとまっていれば、まだ範囲選択はしやすいのですが、出店した順に店番が振られている場合などだと、範囲選択は非常に面倒になります。


面倒ということで、わざわざ、Excel VBAでマクロをつくるというのも、なんか割に合いません。


そこで、発想の転換。

そもそも順位というは、自分の数値より大きい数値の件数が何件あるのかがわかれば、算出することができます。


何件あるのか?ということなので、COUNTIFS関数をつかうことで、条件付き順位を算出することができるのです。


では、E2をクリックして、COUNTIFS関数をつかった数式をつくっていきましょう。


E2の数式は、

=COUNTIFS($C$2:$C$10,C2,$D$2:$D$10,">"&D2)+1


数式の説明はあとでするとして、まずは数式を確定して、結果を確認してみましょう。


このように、地区ごとに順位を算出することができました。


それでは、数式の引数を確認していきましょう。

=COUNTIFS($C$2:$C$10,C2,$D$2:$D$10,">"&D2)+1


検索条件範囲1は、地区の$C$2:$C$10。オートフィル機能で数式をコピーしますので、絶対参照で設定する必要があります。


検索条件1には、B2。


検索条件範囲2は、売上高の$D$2:$D$10。

こちらも絶対参照の設定を忘れずに行っていきましょう。


最後の、検索条件2ですが、「">"&D2」と設定します。

これは、D2:D10の範囲で、D2より大きい値がいくつあるのか確認しています。


さて、数式の最後尾に「+1」がされています。

これはなんなのかというと、「D2より大きい」という条件になっていますので、1番大きい値の場合、自分自身の値よりも大きい値はないわけですから、「0」と算出されてしまいます。


そのために「+1」することで、条件付き順位を算出できるというわけです。


順位をCOUNTIFS関数で算出できることを知っていれば、複数条件での順位を算出するなど、色々な角度から順位を算出することができるようになります。


例えば、全体では、順位が高い方だけど、地区内の順位だと、下の方ということも簡単に算出することができます。


日頃使っている資料などに、プラスしたりするといいかもしれませんね。