RANK.EQ関数で同じ値なら行が上の値に上の順位を付ける

同じ値なら行が上の値に上の順位を付ける

2013Excel関数技BEST 53回 RANK.EQ関数 COUNTIF関数

同じ値なら行が上の値に上の順位を付けるRANK.EQ関数

RANK関数、RANK.EQ(Excel2010以降)関数を使うと、同じ値には、同じ順位がつきます。
同じ順位では困るというようなケースで、同じ値なら行が上の値に上の順位を割り当てるにはどうしたらよいでしょうか?
IF関数を使う?惜しい!今回はCOUNTIF関数を使い、上の行にある支店に上の順位をつける例を紹介します。
(サンプルファイルは、こちらから 2013関数技53回サンプルデータ

同じ値なら行が上の値に上の順位を付ける

販売個数で順位をつけた表があります。販売個数が同じだと順位も同じです。
あ
これを同じ値の下の順位を+1して2位なら3位、6位なら7位と表示する式を考えます。
あ

複雑な数式は分解して考える

わかりやすくするために、COUNTIF関数だけを考えます。
D12セルにCOUNTIF関数の数式を入力して、同じ値があるかどうかカウントします。
あ
行の下の方にある同じ値のセルでは、D12セルに入れた式でいいのです。
式は
=COUNTIF($B$2:$B$13,B12)
でも、カウントする範囲が一緒のため、上の同じ値のセルでもカウントが2となってしまいます。
あ
そこで、カウントする範囲を自分の値のある行までというように限定してやり、-1すると望んでいる結果が得られます。
あ
あ
このCOUNTIF関数の数式とRANK関数の数式を合わせて使います。
式は,COUNTIFの数式とRANKの数式を合わせて
=COUNTIF($B$2:B2,B2)-1+RANK.EQ(B2,$B$2:$B$13)
あ
式を下までコピーして、同じ値なら行が上の値に上の順位を付ける表の完成です。
あ
今日の講義は以上です。お疲れ様でした。