Excel RANK関数で同順位を発生させずに順位表を作成する方法

2021年11月6日

RANK関数で順位を付ける際に同一数値があれば順位が重複しないように

別の順位を付ける数式を紹介します。

手順

重複無しの順位を設定

RANK.EQ関数COUNTIF関数を利用した数式を設定して下にコピーします。

=RANK.EQ(数値セル,$指定の数値範囲,0)+COUNTIF($指定の数値セル:数値セル, 数値セル)-1

下の例ではこのようになります。

=RANK.EQ(B4,$B$4:$B$13,0)+COUNTIF($B$4:B4,B4)-1

B列が順位を付ける得点、C列がRANK.EQ関数そのままの重複あり順位

D列が重複なしの順位です。

重複無しの順位を設定した例

同一順位がある場合、空きを作るRANK.EQ関数

COUNTIF関数で同一数値の件数を数え自身を除いた件数(-1)を足しています。

範囲は先頭行を$で固定し、末尾行は固定しません。

これにより上の行にいるほど順位が上がります。

(Cさん=2位、Eさん=3位、Gさん=4位)

名前などで順位を並べたい場合は、先に並び替えておく必要があります。

LET関数による数式改善

そこまで複雑な数式ではないですがLET関数の適用効果が一応あり

サンプルとして好例なので紹介します。

=RANK.EQ(B4,$B$4:$B$13,0)+COUNTIF($B$4:B4,B4)-1

↑元の数式。↓LET関数で置き換えた数式。

=LET(
  対象セル,B4,
  ランク付け始点セル,$B$4,
  ランク付け範囲,ランク付け始点セル:$B$13,
  RANK.EQ(対象セル,ランク付け範囲,0)+COUNTIF(ランク付け始点セル:対象セル,対象セル)-1
)

このレベルの数式だと逆にややこしくなるデメリットもあるため、

数式に適宜意味のあるを付けられる&セル参照を変える際に手間が少ないメリットとを

天秤にかけて、どちらを重視するか判断する必要があります。

VLOOKUP関数で順位表を作成

これにより順位キーにVLOOKUP関数を使い順位表を作ることが可能です。

(XLOOKUP関数でも可能です)

重複がある場合、順位に空きが発生するため#N/Aエラーが発生してしまいますが、

VLOOKUP関数で#N/Aエラーが発生してしまう状態のキャプチャ

重複なしの場合、空きが発生しないためエラーなしに取得することが可能です。

ただし対象の人数が全て順位表にない場合は

同一得点であっても途切れてしまう場合があります。

よって先に切れてしまう最初の人が同一得点でないか確認した上で

順位表に追加するかを検討する必要があります。

重複なしの順位でエラーが発生しない状態のキャプチャ

Excelを効率的に習得したい方へ

当サイトの情報を電子書籍用に読み易く整理したコンテンツを

買い切り950円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:1,400ページの情報量で

(実際のページ数はデバイスで変わります)

基本的な使い方、関数の解説(140種類)、

頻出テクニックと実用例(109種類)、

XLOOKUP関数、LET関数、シートビュー、LAMBDA関数、スピルなど便利な新機能を紹介。

体系的に学びたい方は是非ご検討ください。

アップデートなどの更新事項があれば随時反映しています。

なお購入後に最新版をダウンロードするには

Amazonへの問い合わせが必要です。

関連記事