Excelでデータを扱う際、順位付けは避けて通れない作業の一つです。営業成績、売上高、顧客満足度など、様々な指標でランキングを作成することで、現状把握や課題発見に繋がります。しかし、手作業で順位を付けるのは時間も手間もかかり、ミスも起こりやすいものです。そこで役立つのが、ExcelのRANK関数です。これを使えば、大量のデータも瞬時に順位付けできます。今回は、そんなRANK関数の使い方を、初心者の方にもわかりやすく解説します。
ExcelのRANK関数とは?順位付けを自動化する基本
RANK関数でできること
RANK関数は、指定された数値の範囲内で、ある数値が何番目に大きいかを返す関数です。つまり、順位付けを自動で行ってくれます。例えば、営業部の社員の売上実績をRANK関数で順位付けすれば、誰が一番売上が高いか、誰が目標達成に苦戦しているかなどが一目でわかります。
筆者の経験では、RANK関数は単純な順位付けだけでなく、条件付きの順位付けや、複数の指標を組み合わせた順位付けなど、様々な応用が可能です。使いこなせば、データ分析の幅が格段に広がります。
RANK関数の構文
RANK関数の構文は以下の通りです。
=RANK(数値, 範囲, [順序])
- 数値:順位を求めたい数値を指定します。セル参照でも直接入力でも構いません。
- 範囲:順位を付ける対象となる数値の範囲を指定します。
- [順序]:省略可能な引数で、順位の付け方を指定します。
- 0または省略:降順(大きい順)で順位を付けます。
- 0以外:昇順(小さい順)で順位を付けます。
順序を省略すると、一般的に使われる降順で順位が付けられます。昇順で順位を付けたい場合は、必ず0以外の数値を指定しましょう。
RANK関数の基本的な使い方
- 順位を表示したいセルを選択します。
- 数式バーに「=RANK(」と入力します。
- 順位を求めたい数値が入力されているセルを選択します。(例:B2)
- カンマ「,」を入力します。
- 順位を付ける対象となる数値の範囲を選択します。(例:B2:B11)
- 範囲を絶対参照にするために、F4キーを押して「$B$2:$B$11」のようにします。
- カンマ「,」を入力します。
- 順序を指定します。降順の場合は0または省略、昇順の場合は1を入力します。(例:0)
- 「)」で閉じ、「Enter」キーを押します。
- 数式を他のセルにコピーします。

ポイント:範囲を絶対参照にすることで、数式をコピーしても範囲がずれるのを防ぎます。絶対参照にするには、範囲のセル参照に「$」マークを付けます。(例:$B$2:$B$11)
売上ランキング、顧客対応時間…RANK関数の実用例
事例1:営業部の売上ランキング作成
ある製造業の営業部では、毎月、営業担当者ごとの売上実績をランキング形式で表示しています。RANK関数を使うことで、担当者別の順位が一目でわかるようになり、目標達成状況の把握や、優秀な担当者の表彰などに役立てています。
例えば、以下のような売上データがあったとします。
| 担当者 | 売上高 |
|---|---|
| 田中 | 1200万円 |
| 佐藤 | 1500万円 |
| 鈴木 | 900万円 |
| 高橋 | 1800万円 |
| 渡辺 | 1100万円 |
この場合、C列にRANK関数を入力することで、売上ランキングを自動で表示できます。C2セルに「=RANK(B2,$B$2:$B$6,0)」と入力し、C6セルまでコピーすれば、各担当者の順位が表示されます。

事例2:コールセンターの対応時間ランキング
コールセンターでは、オペレーターの顧客対応時間を短縮することが重要なKPIの一つです。RANK関数を使って、オペレーターごとの平均対応時間をランキング形式で表示することで、対応時間が長いオペレーターを特定し、研修や指導を行うことができます。
例えば、以下のような対応時間データがあったとします。
| オペレーター | 平均対応時間 |
|---|---|
| 山田 | 5分30秒 |
| 木村 | 4分45秒 |
| 斉藤 | 6分15秒 |
| 吉田 | 5分00秒 |
| 小林 | 4分30秒 |
この場合、C列にRANK関数を入力することで、対応時間ランキングを自動で表示できます。ただし、対応時間は小さい方が順位が上になるように、順序を1に指定する必要があります。C2セルに「=RANK(B2,$B$2:$B$6,1)」と入力し、C6セルまでコピーすれば、各オペレーターの順位が表示されます。

事例3:経理部の月次決算処理時間ランキング
経理部では、月次決算の処理時間を短縮することが目標の一つです。RANK関数を使って、担当者ごとの処理時間をランキング形式で表示することで、ボトルネックとなっている作業を特定し、改善策を検討することができます。経理の現場では、この設定を忘れて集計がずれるケースをよく見かけます。
例えば、以下のような処理時間データがあったとします。
| 担当者 | 処理時間 |
|---|---|
| Aさん | 8時間 |
| Bさん | 6時間 |
| Cさん | 9時間 |
| Dさん | 7時間 |
| Eさん | 5時間 |
この場合も、C列にRANK関数を入力することで、処理時間ランキングを自動で表示できます。対応時間と同様に、処理時間は短い方が順位が上になるように、順序を1に指定する必要があります。C2セルに「=RANK(B2,$B$2:$B$6,1)」と入力し、C6セルまでコピーすれば、各担当者の順位が表示されます。

RANK関数をさらに活用!応用パターンを紹介
重複順位の処理:RANK.EQ関数とRANK.AVG関数
RANK関数を使うと、同じ数値が複数ある場合に、同じ順位が割り当てられます。例えば、2人の営業担当者の売上高が同じ場合、2人とも同じ順位になります。この場合、次の順位は繰り下げられます。例えば、1位が1人、2位が2人いた場合、次の順位は4位になります。
Excel 2010以降では、重複順位の処理方法が異なる2つの関数が追加されました。それがRANK.EQ関数とRANK.AVG関数です。
- RANK.EQ関数:RANK関数と同じように、重複する数値には同じ順位を割り当てます。
- RANK.AVG関数:重複する数値には、平均順位を割り当てます。例えば、2人の営業担当者の売上高が同じで、2位だった場合、2人とも2.5位(2位と3位の平均)になります。
どちらの関数を使うかは、状況によって異なります。重複順位を避けたい場合は、RANK.AVG関数を使うと良いでしょう。
RANK.EQ関数の構文はRANK関数と全く同じです。
=RANK.EQ(数値, 範囲, [順序])
RANK.AVG関数の構文もRANK関数と全く同じです。
=RANK.AVG(数値, 範囲, [順序])

条件付きの順位付け:COUNTIFS関数との組み合わせ
RANK関数だけでは、特定の条件を満たすデータのみを対象とした順位付けはできません。しかし、COUNTIFS関数と組み合わせることで、条件付きの順位付けが可能になります。
例えば、営業部の売上ランキングを作成する際に、特定の地域を担当する営業担当者のみを対象としたランキングを作成したいとします。この場合、COUNTIFS関数を使って、指定された地域を担当する営業担当者の数をカウントし、RANK関数で順位付けを行います。
具体的な数式は以下のようになります。
=RANK(B2,IF(C2="東京",$B$2:$B$11,""),0)+COUNTIFS($B$2:$B$11,">"&B2,$C$2:$C$11,"東京")
この数式は、C列に「東京」と入力されている行のみを対象として、B列の売上高の順位を計算します。COUNTIFS関数は、B列の売上高がB2セルよりも大きい行の中で、C列に「東京」と入力されている行の数をカウントします。この数をRANK関数の結果に加えることで、条件を満たすデータのみを対象とした順位付けを実現しています。
注意点:この数式は配列数式として入力する必要があります。数式を入力した後、Ctrl+Shift+Enterキーを押して確定してください。数式が「{}」で囲まれていれば、正しく配列数式として入力されています。
複数の条件を組み合わせた順位付け
複数の条件を組み合わせた順位付けも可能です。例えば、売上高と利益率の両方を考慮したランキングを作成したいとします。この場合、まず、売上高と利益率をそれぞれRANK関数で順位付けし、その結果を合算して、最終的な順位を決定します。
具体的な数式は以下のようになります。
=RANK(B2,$B$2:$B$11,0)+RANK(C2,$C$2:$C$11,0)
この数式は、B列の売上高の順位と、C列の利益率の順位をそれぞれ計算し、その結果を合算します。合算された値が小さいほど、総合的な順位が高くなります。
RANK関数でよくあるエラーと解決策
#N/Aエラー:範囲の指定ミス
RANK関数でよくあるエラーの一つが、#N/Aエラーです。このエラーは、順位を求めたい数値が、範囲内に存在しない場合に発生します。例えば、範囲をB2:B10と指定したのに、順位を求めたい数値がB11に入力されている場合などに発生します。範囲指定を間違えて#N/Aが出た経験はないだろうか。
解決策としては、範囲の指定が正しいかどうかを確認し、必要に応じて修正してください。
#VALUE!エラー:数値以外のデータが含まれている
#VALUE!エラーは、範囲内に数値以外のデータが含まれている場合に発生します。例えば、範囲内に文字列や空白セルが含まれている場合などに発生します。
解決策としては、範囲内に数値以外のデータが含まれていないかを確認し、必要に応じて修正または削除してください。文字列を数値に変換できる場合は、VALUE関数などを使って変換することも可能です。
順位が正しく表示されない:絶対参照の指定忘れ
RANK関数を使って順位を計算した際に、順位が正しく表示されない場合があります。これは、範囲を絶対参照にしていないことが原因であることが多いです。範囲を絶対参照にしないと、数式をコピーした際に範囲がずれてしまい、正しい順位が計算されません。
解決策としては、範囲を絶対参照にするために、F4キーを押して「$」マークを付けるようにしてください。(例:$B$2:$B$11)

なぜRANK関数?他の順位付け方法との比較
並べ替え機能との違い
Excelには、データを並べ替える機能があります。並べ替え機能を使えば、売上高の高い順にデータを並べ替えることができますが、元のデータの順番が変わってしまうというデメリットがあります。また、順位を数値として表示することができません。
RANK関数を使えば、元のデータの順番を変えずに、順位を数値として表示することができます。そのため、元のデータの順番を維持しつつ、順位を確認したい場合に便利です。
ピボットテーブルとの違い
ピボットテーブルは、大量のデータを集計・分析するのに便利な機能です。ピボットテーブルを使えば、売上高の合計や平均などを簡単に計算できますが、順位を直接表示することはできません。
RANK関数を使えば、ピボットテーブルで集計したデータに対して、さらに順位付けを行うことができます。例えば、ピボットテーブルで支店ごとの売上高を計算し、その結果に対してRANK関数で順位付けを行うことで、売上高の高い支店を特定することができます。
LARGE関数、SMALL関数との違い
LARGE関数は、指定された範囲内で、n番目に大きい数値を返す関数です。SMALL関数は、指定された範囲内で、n番目に小さい数値を返す関数です。
これらの関数を使えば、最大値や最小値、上位n件の数値を簡単に取得できますが、順位を直接表示することはできません。RANK関数を使えば、各数値が全体の中で何番目に大きいか(または小さいか)を把握することができます。
業務効率を劇的に向上させるRANK関数のヒント
ショートカットキーを活用する
RANK関数を入力する際に、ショートカットキーを活用することで、作業時間を短縮できます。例えば、数式バーに「=RANK(」と入力する代わりに、「=RA」と入力してCtrl+Shift+Enterキーを押すと、RANK関数が自動的に補完されます。
また、範囲を選択する際に、マウスでドラッグする代わりに、キーボードの矢印キーを使うと、より正確に範囲を選択できます。
数式をコピーする際の工夫
RANK関数を入力したセルをコピーする際に、フィルハンドル(セルの右下の小さな四角)をドラッグする代わりに、ダブルクリックすると、データが入力されている範囲まで自動的にコピーされます。これは、大量のデータに対してRANK関数を適用する場合に非常に便利です。
条件付き書式との組み合わせ
RANK関数で順位付けした結果に対して、条件付き書式を適用することで、上位n件のデータを強調表示することができます。例えば、上位3位までのデータを背景色を変えたり、文字色を変えたりすることで、一目で重要なデータを見つけ出すことができます。
条件付き書式は、「ホーム」タブの「スタイル」グループにある「条件付き書式」ボタンから設定できます。
IF関数との組み合わせでランキングを動的に変化させる
IF関数と組み合わせることで、ランキングの対象範囲を動的に変化させることができます。例えば、特定の期間のデータのみを対象としたランキングを作成したい場合、IF関数を使って、指定された期間のデータのみをRANK関数の範囲に含めるようにします。
具体的な数式は以下のようになります。
=RANK(B2,IF(A2>=DATE(2023,4,1),IF(A2<=DATE(2023,4,30),$B$2:$B$11,""),""),0)
この数式は、A列の日付が2023年4月1日から2023年4月30日までの期間に含まれる場合のみ、B列の売上高をRANK関数の範囲に含めます。
VBAでRANK関数を自動化する
VBA(Visual Basic for Applications)を使うことで、RANK関数の計算を自動化することができます。例えば、ボタンをクリックするだけで、最新のデータに基づいて自動的にランキングが更新されるようにすることができます。
VBAのコードは以下のようになります。
Sub CalculateRanking()
Dim LastRow As Long
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("C2:C" & LastRow).Formula = "=RANK(B2,$B$2:$B$" & LastRow & ",0)"
End Sub
このコードは、B列に入力されているデータの最終行を取得し、C列にRANK関数を入力します。このコードをVBAエディタにコピーし、ボタンに割り当てることで、RANK関数の計算を自動化することができます。
ポイント:VBAを使うには、Excelの開発タブを表示する必要があります。「ファイル」→「オプション」→「リボンのユーザー設定」で、「開発」にチェックを入れてください。
Googleスプレッドシート、LibreOffice Calcとの違い
GoogleスプレッドシートでのRANK関数
Googleスプレッドシートにも、RANK関数が用意されています。基本的な使い方はExcelとほぼ同じですが、一部の引数の指定方法が異なる場合があります。
例えば、Googleスプレッドシートでは、順序を省略した場合、昇順で順位が付けられます。Excelでは、順序を省略した場合、降順で順位が付けられるため、注意が必要です。
LibreOffice CalcでのRANK関数
LibreOffice Calcにも、RANK関数が用意されています。基本的な使い方はExcelとほぼ同じですが、関数名が異なる場合があります。
LibreOffice Calcでは、RANK関数はRANK.AVGという名前で提供されています。また、重複順位の処理方法がExcelと異なる場合があります。LibreOffice Calcでは、重複する数値には、平均順位ではなく、最も高い順位が割り当てられます。
ExcelのバージョンによるRANK関数の違い
Excel 2010以降:RANK.EQ関数とRANK.AVG関数の追加
Excel 2010以降では、重複順位の処理方法が異なる2つの関数、RANK.EQ関数とRANK.AVG関数が追加されました。これらの関数を使うことで、重複順位の処理方法をより柔軟に選択できるようになりました。
Excel 2007以前:RANK関数の制限
Excel 2007以前のバージョンでは、RANK関数しか利用できません。そのため、重複順位の処理方法を選択することができません。また、Excel 2007以前のバージョンでは、扱えるデータ量に制限があるため、大量のデータに対してRANK関数を適用する場合、処理速度が遅くなる可能性があります。
Microsoft 365:常に最新の機能が利用可能
Microsoft 365を利用している場合、常に最新のバージョンのExcelを利用できるため、RANK関数に関する最新の機能や改善を利用することができます。また、クラウド上でデータを共有したり、共同編集したりすることも可能です。
RANK関数 補足FAQ
Q1: 順位が同じ場合に、次の順位はどうなりますか?
A1: RANK関数(またはRANK.EQ関数)を使うと、順位が同じ場合、同じ順位が割り当てられます。次の順位は繰り下げられます。例えば、1位が1人、2位が2人いた場合、次の順位は4位になります。
Q2: 昇順で順位を付けるにはどうすれば良いですか?
A2: RANK関数の順序引数に、0以外の数値を指定します。例えば、「=RANK(B2,$B$2:$B$11,1)」のように指定すると、昇順で順位が付けられます。
Q3: RANK関数でエラーが表示される場合はどうすれば良いですか?
A3: エラーの種類によって対処法が異なります。#N/Aエラーの場合は、範囲の指定が正しいかどうかを確認してください。#VALUE!エラーの場合は、範囲内に数値以外のデータが含まれていないかを確認してください。順位が正しく表示されない場合は、範囲を絶対参照にしているかどうかを確認してください。
Q4: RANK関数と他の関数を組み合わせて使うことはできますか?
A4: はい、可能です。COUNTIFS関数と組み合わせることで、条件付きの順位付けを行うことができます。IF関数と組み合わせることで、ランキングの対象範囲を動的に変化させることができます。
Q5: 大量のデータに対してRANK関数を使うと、処理速度が遅くなりますか?
A5: 大量のデータに対してRANK関数を使うと、処理速度が遅くなる可能性があります。その場合は、VBAを使ってRANK関数の計算を自動化したり、より高性能なPCを使ったりすることで、処理速度を改善することができます。
データ分析を加速させるRANK関数活用術
今回は、ExcelのRANK関数について、基本的な使い方から応用まで、幅広く解説しました。RANK関数は、売上ランキング、顧客対応時間ランキング、月次決算処理時間ランキングなど、様々な業務で活用できます。
最後に、明日からの実務に取り入れるための3ステップを紹介します。
- まずは、基本的なRANK関数の使い方をマスターしましょう。
- 次に、RANK.EQ関数とRANK.AVG関数の違いを理解し、状況に応じて使い分けられるようにしましょう。
- 最後に、COUNTIFS関数やIF関数と組み合わせて、より高度な順位付けに挑戦してみましょう。
RANK関数を使いこなせば、データ分析のスキルが向上し、業務効率を大幅に改善することができます。ぜひ、今回の記事を参考にして、RANK関数を日々の業務に役立ててください。


コメント