2023年12月4日【ID:0】
【Excel】重複のない順位を割り当てる
指定した範囲での順位を求める関数に、RANK関数またはRANK.EQ関数があります。
ただ、この関数で順位を求めると、以下のように重複した値の場合に同じ順位になってしまいます。
=RANK.EQ(B3,$B$3:$B$12)
この順位から同じ順位をなくし、値が重複した場合は、上のデータを優先して順位を付ける方法について解説していきます。
重複した値が存在する場合、「1,3,6,7,8、9,10」のように一部の順位「2,4,5」が存在しなくなります。
重複した値には同じ順位が表示され、次の順位が飛ばされて表示されることが分かります。
そのため、順位を求める対象の値より上の値に存在する、対象の値と同じ値の数を加えることで、重複のない連番の順位を付けることができます。
一番上のデータに関しては、その値より上に値がないため、同じ値の数が0になります。
そのため、2つ目のデータから、同じ値の数を求めていきます。
指定した値の数を求めるには、COUNTIF関数が使えます。
=COUNTIF(範囲, 検索条件)
// 指定した範囲の中で、検索条件を満たすセルの数を返す
実際に、2、6、8つ目のデータに関して、COUNTIF関数を用いて求めてみます。
=COUNTIF(B3,B4)
=COUNTIF(B3:B7,B8)
=COUNTIF(B3:B9,B10)
2つ目の式に関して、以下のようにも表現することができます。
=COUNTIF(B3:B3,B4)
以下の3つの式を比較すると、範囲の開始セルB3のみ固定で、それ以外が相対的に変化していることが分かります。
=COUNTIF(B3:B3,B4)
=COUNTIF(B3:B7,B8)
=COUNTIF(B3:B9,B10)
そのため、開始セルB3のみを絶対参照にすることで、オートフィルを用いて求めることができます。
実際に、順位にCOUNTIF関数の値を加えた式が以下になります。
=COUNTIF($B$3:B3,B4) + RANK.EQ(B4,$B$3:$B$12)
// 開始セルB3を絶対参照にする
後は、セルC4の数式を一番下までオートフィルでコピーすることで、以下のように重複のない順位を求められます。