スプレッドシートのRANK関数の使い方|順位を自動で付ける方法
「スプレッドシートの売上データに順位を付けたいけど、手作業で並べ替えるのは面倒」。そんな場面はありませんか?
データが更新されるたびに順位を付け直すのは大変ですよね。ミスも起きやすくなります。
RANK関数を使えば、データの順位を自動で計算できます。この記事では基本の書き方から降順・昇順の切り替え、同順位の扱いまで丁寧に解説します。
RANK関数とは?値の順位を返す関数
RANK関数は、指定した値がデータの中で何番目かを返す関数です。読み方は「ランク」で、英語の「Rank(順位)」がそのまま名前になっています。
たとえば売上データの中で「85万円は何位?」と聞きたいときに使います。答えを数値(1位、2位…)で返してくれる関数です。
NOTE
スプレッドシートの
RANKはRANK.EQと同じ動作をします。Excelとの互換性も問題ありません。
RANK関数の書き方(構文と引数)
基本構文
=RANK(値, 範囲, [順序])
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 順位を調べたいセル |
| 範囲 | 必須 | 順位を比較するデータ範囲 |
| 順序 | 任意 | 0=降順(大きい順)、1=昇順(小さい順)。省略すると0(降順) |
第3引数の「順序」がポイントです。省略すると降順(大きい値が1位)になります。
基本的な使い方
以下の売上データでRANK関数を使ってみましょう。
| A列(担当者) | B列(売上) | C列(順位) | |
|---|---|---|---|
| 2行目 | 田中 | 85 | =RANK(B2,$B$2:$B$8) |
| 3行目 | 鈴木 | 92 | |
| 4行目 | 佐藤 | 78 | |
| 5行目 | 山田 | 95 | |
| 6行目 | 高橋 | 88 | |
| 7行目 | 伊藤 | 72 | |
| 8行目 | 渡辺 | 85 |
C2セルに =RANK(B2,$B$2:$B$8) と入力します。
ここで重要なのは、範囲を絶対参照($B$2:$B$8)にすることです。数式を下にコピーしても範囲がずれません。
結果は以下のようになります。
| 担当者 | 売上 | 順位 |
|---|---|---|
| 田中 | 85 | 4 |
| 鈴木 | 92 | 2 |
| 佐藤 | 78 | 6 |
| 山田 | 95 | 1 |
| 高橋 | 88 | 3 |
| 伊藤 | 72 | 7 |
| 渡辺 | 85 | 4 |
田中と渡辺はどちらも85で同じ4位になっています。同順位の扱いについては後ほど詳しく説明します。
降順と昇順の切り替え
第3引数で順位の方向を変えられます。
=RANK(B2,$B$2:$B$8, 0) → 降順(大きい値が1位)
=RANK(B2,$B$2:$B$8, 1) → 昇順(小さい値が1位)
| 担当者 | 売上 | 降順(0) | 昇順(1) |
|---|---|---|---|
| 田中 | 85 | 4 | 3 |
| 鈴木 | 92 | 2 | 6 |
| 山田 | 95 | 1 | 7 |
| 伊藤 | 72 | 7 | 1 |
売上ランキングなら降順(0)、コスト順位なら昇順(1)が自然です。用途に応じて使い分けてください。
実践的な使い方・応用例
同順位がある場合の挙動と対処法
RANK関数で同じ値がある場合、上位の順位が付きます。そして次の順位が飛びます。
例: 4位が2人いると「4, 4, 6」となり、5位がスキップされます。
これで問題ないケースもあります。ただし連番(4, 5, 6)で付けたい場合はCOUNTIF関数を組み合わせます。
=RANK(B2,$B$2:$B$8)+COUNTIF($B$2:B2,B2)-1
この数式のしくみは以下のとおりです。
RANK(B2,$B$2:$B$8): 通常の順位を求めるCOUNTIF($B$2:B2,B2): 現在行までに同じ値が何個あるかを数える-1: 初回(1個目)は調整しない
2つ目の同じ値には+1されるため、連番になります。
テスト成績の順位表を作る
テストの点数に降順で順位を付ける例です。
| 生徒名 | 点数 | 順位 |
|---|---|---|
| A | 78 | =RANK(B2,$B$2:$B$6) → 3 |
| B | 92 | → 1 |
| C | 65 | → 5 |
| D | 85 | → 2 |
| E | 72 | → 4 |
最高点が1位になる降順が自然な場面です。第3引数は省略(または0)で使います。
納期が早い順にランキングを付ける
日付データに昇順で順位を付ける例です。
| タスク | 納期 | 優先順位 |
|---|---|---|
| 企画書 | 3/25 | =RANK(B2,$B$2:$B$5,1) → 1 |
| 報告書 | 4/10 | → 3 |
| 見積書 | 3/28 | → 2 |
| 資料 | 4/15 | → 4 |
日付は内部的に数値として扱われます。昇順(1)にすれば、早い日付ほど小さい順位になります。
よくあるエラーと対処法
#N/Aエラー
「値」が「範囲」に含まれていない場合に発生します。
よくある原因と対策:
| 原因 | 対策 |
|---|---|
| 値のセルが範囲外 | 範囲を正しく指定し直す |
| 値が文字列型の数字 | VALUE関数で数値に変換する |
| 範囲にテキストが混在 | 数値だけの範囲を指定する |
特に注意したいのが「文字列型の数字」です。見た目は数字でも、文字列として入力されている場合があります。=VALUE(A1) で数値に変換してからRANKに渡すと解決します。
TIP
セルを選択して左揃えになっている数字は文字列型の可能性があります。数値は右揃えが初期設定です。
LARGE・SMALL関数との違い・使い分け
RANK関数とLARGE関数・SMALL関数は混同しやすいですが、操作の方向が逆です。
| 関数 | 操作の方向 | 使う場面 |
|---|---|---|
| RANK | 値 → 順位 | 「85万円は何位?」 |
| LARGE | 順位 → 値 | 「2位の売上はいくら?」 |
| SMALL | 順位 → 値(小さい方) | 「下から2番目はいくら?」 |
=RANK(85, B2:B8) → 4(85は4番目に大きい)
=LARGE(B2:B8, 4) → 85(4番目に大きい値)
RANKとLARGEは逆方向の関係です。「順位を知りたい」ならRANK、「値を取り出したい」ならLARGE/SMALLを使ってください。
まとめ
RANK関数は「データの中で何番目か」を返す関数です。売上ランキングやテスト順位など、実務でよく使う場面に対応できます。
この記事のポイント
- 構文は
=RANK(値, 範囲, [順序])の3引数 - 第3引数: 0(省略可)=降順、1=昇順
- 範囲は絶対参照($)で固定するのを忘れずに
- 同順位があると次の順位が飛ぶ(4, 4, 6)
- 連番にしたいときはCOUNTIF関数と組み合わせる
- LARGE/SMALLは「順位→値」、RANKは「値→順位」の逆方向
次のステップ:関連する集計関数
RANK関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データの分析力がぐっと上がりますよ。
