Excelでテストの点数や売上などのデータを順位付けしたい場面は多いでしょう。しかし、同順位のデータをどのように扱うか、関数でどのように設定すれば良いか悩むこともあります。
ExcelのRANK関数を使えば、簡単にデータの順位付けが可能です。さらに、同順位のデータをどのように扱うか、いくつかのオプションも用意されています。
この記事では、ExcelのRANK関数を使ってデータを順位付けする方法と、同順位のデータを扱う際の具体的な設定方法を解説します。
【要点】ExcelのRANK関数でデータを順位付けする方法
- RANK関数: 指定した数値がリストの中で何番目に大きいか(または小さいか)を返します。
- 順位の計算方法: 第3引数で昇順(小さい順)か降順(大きい順)かを指定できます。
- 同順位の扱い: 第3引数に「0」または省略で降順、同順位は同じ順位になり、次の順位はスキップされます。第3引数に「1」で昇順、同順位は同じ順位になり、次の順位はスキップされます。
- 同順位を連続させる方法: RANK.EQ関数とRANK.AVG関数を使い分けることで、同順位の扱いの違いを理解できます。
ADVERTISEMENT
目次
RANK関数の基本と仕組み
RANK関数は、ある数値が数値リストの中で何番目に位置するかを示す順位を計算する関数です。例えば、テストの点数リストで、ある生徒の点数が何位かを調べたい場合に使えます。この関数は、同順位のデータをどのように扱うかによって、いくつかの挙動があります。
Excel 2010以降では、RANK.EQ関数とRANK.AVG関数という、より明確に同順位の扱いを区別できる関数も提供されています。RANK関数は、これらの新しい関数との互換性のために存在しています。基本的にはRANK.EQ関数と同じように動作します。
RANK関数を使った順位付けの手順
RANK関数を使ってデータを順位付けする基本的な手順を説明します。ここでは、テストの点数リストを例に、点数が高い順(降順)に順位を付けます。
- 順位を付けたいデータ範囲を準備する
A1セルからA10セルにテストの点数が入力されていると仮定します。 - RANK関数の入力を開始する
順位を表示したいセル(例:B1セル)を選択し、以下の数式を入力します。
=RANK(A1, $A$1:$A$10, 0) - 数式の各引数を理解する
A1: 順位を計算したい対象の数値(この場合はA1セルの点数)です。$A$1:$A$10: 順位を計算するための数値リスト(この場合はA1からA10の点数範囲)です。この範囲は、数式をコピーしても変わらないように絶対参照($記号)を使用します。0: 順位の計算方法を指定します。0または省略すると、降順(数値が大きいほど順位が上)で計算します。1を指定すると昇順(数値が小さいほど順位が上)になります。
- Enterキーで確定する
数式を入力したらEnterキーを押します。B1セルにA1セルの点数の順位が表示されます。 - 数式をコピーする
B1セルの右下隅にあるフィルハンドル(小さな四角)をダブルクリックするか、下にドラッグして、B10セルまで数式をコピーします。これで、A列の各点数に対応する順位がB列に表示されます。
同順位の扱い方とRANK.EQ、RANK.AVG関数
RANK関数(およびRANK.EQ関数)では、同順位のデータがあった場合、同じ順位が付けられます。しかし、その次の順位は、同順位の数だけスキップされます。例えば、1位が2人いた場合、次の順位は3位ではなく2位になります。
一方、RANK.AVG関数は、同順位のデータの平均値を順位として返します。例えば、1位が2人いた場合、両方に1.5位が付けられます。これは、より均等に順位を配分したい場合に役立ちます。
RANK.EQ関数とRANK.AVG関数の使い分け
どちらの関数を使用するかは、データの性質と、同順位をどのように扱いたいかによって決まります。
- RANK.EQ関数: 従来のRANK関数と同じ動作をします。同順位は同じ順位になり、次の順位はスキップされます。順位の数が整数で、厳密な「順位」を付けたい場合に適しています。
- RANK.AVG関数: 同順位のデータの平均値を返します。順位の計算結果が小数になることがあります。順位の合計値が重要になる場合や、より公平な順位付けを行いたい場合に適しています。
同順位の扱いの具体例
以下のデータで、RANK.EQ関数とRANK.AVG関数を使った場合の比較を見てみましょう。
データ例:
A列(点数): 100, 90, 90, 80, 70
RANK.EQ関数(降順)の場合
- 100点: 1位
- 90点: 2位(2人いるため、次の順位は3位ではなく2位)
- 90点: 2位
- 80点: 4位(2位が2つあったため、次は4位になる)
- 70点: 5位
数式例:=RANK.EQ(A1, $A$1:$A$5, 0)
RANK.AVG関数(降順)の場合
- 100点: 1位
- 90点: 2.5位(2人の90点の平均値。2位と3位の平均)
- 90点: 2.5位
- 80点: 4位
- 70点: 5位
数式例:=RANK.AVG(A1, $A$1:$A$5, 0)
昇順での順位付け
点数が低いほど順位が上になるように、昇順で順位を付けたい場合は、RANK関数の第3引数に「1」を指定します。
例:最低点が1位になる場合
=RANK(A1, $A$1:$A$10, 1)
=RANK.EQ(A1, $A$1:$A$10, 1)
=RANK.AVG(A1, $A$1:$A$10, 1)
同順位の扱いは、降順の場合と同様に、RANK.EQ関数はスキップし、RANK.AVG関数は平均値を返します。
ADVERTISEMENT
RANK関数でよくある間違いと対処法
RANK関数を使用する際に、意図した結果が得られないことがあります。ここでは、よくある間違いとその対処法を説明します。
絶対参照になっていない
数式をコピーした際に、順位を計算するための数値リストの範囲がずれてしまうことが最も一般的な間違いです。
原因
数値リストの範囲を相対参照(例: A1:A10)のままコピーしているためです。数式を下のセルにコピーすると、範囲も一緒に下にずれてしまいます。
対処法
数値リストの範囲を絶対参照にします。数式バーで範囲を選択した状態でF4キーを押すか、手動で範囲の前後に「$」記号を追加してください。
例:=RANK(A1, $A$1:$A$10, 0)
降順と昇順の指定間違い
点数が高いほど順位が上になる(降順)はずが、逆に点数が低いほど順位が上になってしまう場合があります。
原因
RANK関数の第3引数(order)の指定が間違っている可能性があります。0または省略が降順、1が昇順です。この指定を逆にしていると、意図しない順位になります。
対処法
第3引数の値を正しく指定しているか確認してください。点数が高いほど順位が上なら0(または省略)、点数が低いほど順位が上なら1を指定します。
同順位の扱いの理解不足
同順位のデータがある場合に、期待していた順位と異なる結果になることがあります。
原因
RANK関数(RANK.EQ関数)は、同順位を同じ順位とし、次の順位をスキップする仕様です。RANK.AVG関数は同順位の平均値を返します。どちらの関数を使っているか、またその仕様を理解していない場合に、混乱が生じます。
対処法
目的に応じてRANK.EQ関数とRANK.AVG関数を使い分けます。単純な順位付けでスキップされても問題ない場合はRANK.EQ関数を、より均等な順位付けをしたい場合はRANK.AVG関数を使用します。同順位の扱いについて、前述の具体例を参考に、期待する結果と関数の仕様が合っているか確認してください。
#N/Aエラーが表示される場合
RANK関数で#N/Aエラーが表示されることがあります。
原因
これは、RANK関数が参照する数値リスト(第2引数)に、対象の数値(第1引数)が存在しない場合に発生します。例えば、対象の数値が空白セルだったり、リストの範囲外だったりする場合です。
対処法
対象の数値(第1引数)が正しく入力されているか、また数値リスト(第2引数)にその値が含まれているかを確認してください。空白セルを計算対象に含めないように、IF関数などと組み合わせることも検討できます。
例:空白セルを無視して順位付けする場合
=IF(A1="", "", RANK.EQ(A1, $A$1:$A$10, 0))
RANK関数と他の順位付け方法の比較
Excelには、RANK関数以外にもデータを順位付けする方法があります。ここでは、代表的な方法との比較を行います。
RANK関数とCOUNTIF関数による順位付けの比較
| 項目 | RANK関数 (RANK.EQ) | COUNTIF関数 |
|---|---|---|
| 主な用途 | 数値リスト内での順位付け | 条件に一致するセルの個数カウント |
| 同順位の扱い | 同じ順位、次の順位をスキップ | 同順位でも、それぞれ個別にカウントされる |
| 計算方法 | 指定した数値がリストの何番目か | 指定した条件を満たすセルの個数 |
| 例(降順) | =RANK.EQ(A1,$A$1:$A$10,0) |
=COUNTIF($A$1:$A$10,">"&A1)(※同順位の扱いが異なる) |
| 実装の容易さ | 数式1つで完結 | 数式1つで完結 |
COUNTIF関数を使った順位付けの注意点
COUNTIF関数は、条件に一致するセルの個数を数えるため、本来は順位付け専用の関数ではありません。降順で順位付けする場合、=COUNTIF($A$1:$A$10,">"&A1)のような数式で、自分より大きい値がいくつあるかを数えることで順位を表現できます。しかし、この方法では同順位の扱いでRANK関数と結果が異なります。
例えば、点数が100, 90, 90, 80の場合、COUNTIF関数で降順順位を付けると、100は1位、90は2位、90は2位、80は4位となります。これはRANK.EQ関数と同じ結果になります。しかし、もし同順位を連続させたい(例:100は1位、90は2位、90は2位、80は3位)といった特殊な要件がある場合は、COUNTIF関数とIF関数を組み合わせるなど、より複雑な数式が必要になります。
ソート機能による順位付け
Excelの「並べ替え」機能を使っても、データを順位付けできます。これは、数式を使わずに視覚的に順位を確認したい場合に便利です。
ソート機能での順位付け手順
- データ範囲を選択する
順位付けしたいデータ範囲を選択します。 - 「並べ替え」ダイアログを開く
「データ」タブの「並べ替え」をクリックします。 - 並べ替えのキーと順序を指定する
「最優先されるキー」で順位付けの基準となる列を選択します。「順序」で「降順」または「昇順」を選択します。 - 「OK」をクリックする
選択した基準でデータが並べ替えられ、視覚的に順位がわかります。
ソート機能の注意点
ソート機能は、元のデータが並べ替えられるため、元の順番を保持したい場合には不向きです。また、ソートしただけでは順位を数値として他の計算に利用することはできません。順位を数値として扱いたい場合は、やはりRANK関数などの数式を使用する必要があります。
まとめ
ExcelのRANK関数を使えば、データの順位付けが簡単に行えます。同順位の扱いについても、RANK.EQ関数とRANK.AVG関数を使い分けることで、目的に合った結果を得られます。
絶対参照の設定ミスや、昇順・降順の指定間違いに注意しながら、RANK関数を使いこなしましょう。
今後は、RANK関数で付けた順位を基に、上位〇〇名を選出するなどの応用にも挑戦してみてください。
ADVERTISEMENT
超解決 Excel・Word研究班
企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。
Office・仕事術の人気記事ランキング
- 【Outlook】宛先が「オートコンプリート」に出ない・間違っている時の修正手順|履歴の削除と再構築
- 【Outlook】メールの受信が数分遅れる!リアルタイムで届かない時の同期設定と送受信グループ設定
- 【Word】差し込み印刷で数字の桁を整える!金額にカンマ(桁区切り)を入れる設定
- 【Excel】矢印キーで「セルが動かず画面がスクロールする」!ScrollLockの解除方法(ノートPC対応)
- 【Outlook】「メール送信を5分遅らせる」設定!誤送信を防ぐ最強のディレイ機能
- 【神技】保存せずに閉じたExcel・Wordファイルを復元する!消えたデータを復活させる4つの救出法
- 【Outlook】予定表の「祝日」が表示されない!最新カレンダーの追加と二重表示の修正手順
- 【Teams】会議の「参加者リスト」を出席後にダウンロードする!誰が参加したか確認する手順
- 【Teams】メッセージを「保存済み」にして後で読む!重要なチャットをブックマークして整理する技
- 【Excel】文字がセルの枠からはみ出す・隠れる!「折り返して表示」と「縮小して全体を表示」の使い分け
