今回は、 RANK.EQ 関数の、同順位の中で、COUNTIF 関数を使って 並び順で順位を付け直す方法について、解説します。 RANK.EQ 関数と COUNTIF 関数を使った今回のやり方は、とても便利で利用する場面が結構出てきます。 全データに通し番号を振ることで、 VLOOKUP 関数と組み合わせてデータの並べ替えも簡単にできますよ。
RANK.EQ 関数の仕様
=RANK.EQ(数値,参照)
数値:順番を求めたい数値
参照:順序の対象となる範囲
RANK.EQ関数は、指定の範囲の中で、指定した数値が何位になるかを返してくれます。
範囲の中で、同じ数値があると、同順位となります。
未使用の番号がないランキングを作る
この、 RANK.EQ 関数が返した値を使って、 VLOOKUP 関数の引数とする場合、同順位の中の一つしか、検索されないことになります。なんとか、全体を表示したい。 VLOOKUP 関数で並べ替えができるように、シリアルに並べて、抜けがないランキングを作りたい。ということはないでしょうか?
そこで、範囲の中での並び順を根拠にして、同順位にならないようにしてみましょう。
範囲の中に、同じ数値があるとします。例えば、3が三つ並んでいるとします。並び順で初めに出てくるもの、一つ目、次に出てくるもの、二つ目、最後に出てくるもの、三つ目。この、出てくる順序を使います。マイナス1すれば、0,1,2。一つしか出てこないものと1番目は、0。2個以上出てくるものは、1,2,と更新される。これをRANK.EQ関数の結果に加算して、目的の順位を算出します。
一つ目、二つ目を数える関数は、COUNTIF関数です。範囲の最初から自分の行までの自分の順位を何個あるか数えます。
=RANK.EQ(A2,$A$2:$A$999,0)+COUNTIF($A$2:A2,A2)-1
表で、順位の列が RANK.EQ 関数で求めたもの。4が二つ、2が二つあります。
その横に、改善という列を追加し、 RANK.EQ 関数と COUNTIF 関数で計算式を入力しました。
RANK.EQ 関数だけでは、B列の順位のように同順位があります。4と2です。
COUNTIF 関数で追加の列、C列に表示します。二回目の4が1に、二回目の2が1になりました。
B列、C列を加算したものがD列「加算」に表示され、同順位がなくなりました。
まとめ
COUNTIF 関数で、始めから自分までの範囲の自分の順位と同じ順位の数を数えて、1を減算する。その数値を RANK.EQ 関数の結果に足し合わせる。
これでオッケーです。
有り難うございました。
コメント