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
では、オートフィルで数式をコピーして確認してみましょう。
このように、条件付きで順位算出することができましたね。