Excelであるグループ内で順位を出すだけならばRANK関数で簡単にできますが、これを同じグループ内でランキング順位をつけるというのが難しい。
もし、●●ならば、という条件を表すIFと絡んだRANK IF関数なんていうものがあればこれは活用したいところです。
しかし、その関数は存在しません。ニーズはありそうですが。。
そこで代替手段を用いる必要があります。
一般的には、countifs関数が用いられます。
Countifs関数をRANK関数として使用する思考法
なぜCountifs関数でRANK関数が代替できるのか?
COUNTIFは条件に合う値の個数をカウントする関数です。
つまり、該当セルより大きいセルの個数はいくつあるか?と考えた時、それは順位を表すことと同義です。
・・| A |
1 | 10
2 | 20
3 | 30
とあるとします。
普通にRANK関数を用いると、10、20、30にランキングをつけよ、という命令になります。
これをCOUNTIF関数でランキングとして数える場合
A1セルの「10」より大きい数のセルはいくつあるか?を求めて(この場合でいうと「20」と「30」の2つあります)、調整をかければいいでしょう。この場合だと+1をすることでランキング順位を表す数値となります。
つまり上記の例でいうと、B1に出力されている「2」の数値は順位に置き替えると本来「3位」でなくてはなりません。そのため、結果に+1を加える必要があります。
=COUNTIF($A$1:$A$3,”>”&A1)+1
この数式の結果は「3」です。つまり、RANK関数で求めた結果と同じです。
分かります!
今、頭から湯気がシューシューと出そうな感じ。なぜCOUNTIFとRANKが同じ扱いになるのか!?気が狂っているんじゃないかと。
でも、そもそも、RANK関数の考え方がCOUNTIF関数でいうところの、
「今のセルの値より大きい(または小さいセル)が全体の中で何個あるのか?」
具体的にいうと、
「1の値より大きい数字は10の中で何個あるか?(答えは9個、順位でいうと10位)」
と同義です。
COUNTIFSになると、複数条件に一致する個数をカウントする関数になる
つまり、グループ内での順位を求める関数として応用ができることになります!
COUNTIFS(カウントイフエス)は、条件が複数ある場合の個数を求める関数になりますから、上記のCOUNTIF関数に「グループ内での条件」を指定することができるのです。
でも、事務所の中の喧噪で、急にグループ内での順位を求める数式を組めというのは、頭が混乱します。
動画にしましたので参考までにどうぞ。
しかし、私は、このCOUNTIFSを用いた手法はおすすめしません。
これは資料のユニバーサルデザインだとは思えないからです。
IF関数とRANK関数を合わせて同じグループ内での順位を求める
この手法は、やぼったい手法で、スマートではないでしょう。作業列が必要となり、一見煩雑です。
しかし、エクセルに弱い人でもどのセルで何をやっているかが分かりやすい仕掛けであります。
手順1)IF関数でグループを抜き出す
Aグループであればその数値を抜き出す関数を作業列を設けて抜き出します。
手順2)手順1で出力された数値を元にRANK関数で順位付け
手順1で導き出された数値をRANK関数でランキング。
※VALUE#のエラーが出るので、IFERROR関数を合わせて用いましょう。
こうすることで、誰にでも(関数で)何をやっているか分かりやすいシートになると思います。
コメント