2/25/2020

Excel。カテゴリー別の順位を算出するには、RANK.EQ関数では対応できません。【Ranking by category】

Excel。カテゴリー別の順位を算出するには、RANK.EQ関数では対応できません。

<RANK.EQ関数・COUNTIFS関数>

次の表を用意しました。

氏名が五十音順になっているリストですが、全体の順位を算出するD列には、RANK.EQ関数を使うことで、順位を算出することが容易にできます。

それでは、全体順位を算出してみましょう。

D2をクリックして、RANK.EQ関数ダイアログボックスを表示します。

数値には、C2。
参照には、数値が含まれている全体なので、$C$2:$C$10
オートフィルで数式をコピーしますので、絶対参照を設定することを忘れないようにしましょう。

順序は、数値がいいものを1位という設定にしますので、0。

それでは、OKボタンをクリックして、オートフィルで数式をコピーして確認してみましょう。

このように、全体順位を算出するには、RANK.EQ関数を使うことで算出できることがわかりました。

なお、D2の数式は、
=RANK.EQ(C2,$C$2:$C$10,0)

では、B列のクラスというカテゴリー別での順位を算出するには、どうしたらいいのでしょうか?

先程確認したRANK.EQ関数には、条件を設定する引数はありませんでした。

また、最近のExcelには、IFS関数やMAXIFS関数など、条件付きで対応できる関数も登場してきましたが、残念ながら、順位を算出する、RANK.EQ関数には、条件付きに対応していません。

そこで、順位を算出場合どのようにしたらいいのか考えてみると、
カテゴリー別で、該当する数値より、大きい値があるのかを確認して、大きい値がないならば、1位ということですよね。

複数条件で、件数を算出するという、考え方なので、使用する関数は『COUNTIFS関数』を使ってみると算出できそうです。

E2をクリックして、COUNTIFS関数ダイアログボックスを表示しましょう。

検索条件範囲1には、$B$2:$B$10
今回、範囲1は、カテゴリー別の判定をさせます。

検索条件1には、B2

検索条件範囲2には、$C$2:$C$10
得点の列です。
範囲1と範囲2ともに、オートフィルで数式をコピーするので、絶対参照を設定忘れないようにしましょう。

最後に、検索条件2には、
">"&C2
比較演算子とセル番地を組み合わせて使用する時には、比較演算子を「”(ダブルコーテーション)」で囲む必要があります。

そして、文字結合の「&」をつかって、セル番地を結合させる必要があります。

“>C2”としてしまうと、>C2という文字を検索してしまうので、当然条件に合致するものはありませんので、注意が必要です。

OKボタンをクリックして、次の数式が出来ていますが、まだ数式としては完成していません。

E2の数式は、
=COUNTIFS($B$2:$B$10,B2,$C$2:$C$10,">"&C2)

このままだと、自分自身よりも大きいデータがあれば数える仕組みですが、自分自身よりも大きいデータがない場合は、「0」になってしまいます。

今回は順位を算出したいので、0位というのは、おかしいので、数式の最後に「+1」をする必要があります。

よって、E2の数式は、
=COUNTIFS($B$2:$B$10,B2,$C$2:$C$10,">"&C2)+1

では、オートフィルで数式をコピーして確認してみましょう。

このように、条件付きで順位算出することができましたね。