【関数】各数値データが全体の何番目か順位付けできる「RANK」の使い方
AさんAさん

Excelで「売上金額」等をレコードごとに順位付けしたいですが、何か良い方法ありますかね?

森田森田

その場合は、関数のRANKを活用すると良いですよ!
では、RANKの使い方について解説していきますね。

はじめに

この記事は関数の概要を把握していることが前提です。

参考記事

関数の概要については以下の記事をご参照ください。

数値データをランク付けしたい場合は「RANK」が有効

実務では、売上金額や受注件数等の数値データを順位付け(ランク付け)することがあります。

単純に上位あるいは下位のレコードを特定することが目的の場合もあれば、データ分析の一環で各レコードに順位のフラグを立てて、上位/下位の傾向把握が目的の場合もあります。

こんな場合、関数のRANKを使うと良いです。
RANKは「ランク」と読む。

RANKを使うことで、各数値データが全体の何番目か、順位を算出できます。

参考記事

百分率で順位付けしたい場合は「PERCENTRANK」を使用してください(詳細は以下の記事を参照)。

RANKの構文

RANKの構文は以下の通りです。

=RANK(数値,参照,[順序])
順序に従って範囲内の数値を並べ替えたとき、数値が何番目に位置するかを返します。

引数名 必須 データ型 説明
数値 数値 「参照」の範囲内で順位を調べたい単一セル(値が数値)を指定します。
参照 参照 順位を調べる対象のセル範囲(値が数値)を指定します。
順序 論理 順位を昇順(小さい順)と降順(大きい順)のどちらにするか指定します。
0:降順、1:昇順

引数「順序」を省略した場合、降順で順位付けされる(RANKは降順がデフォルト)。
RANKは同じ順位がある場合、その数だけ下位の順位に欠番が生じる。
※例:1位タイが2つある場合、2位が欠番となり、以降は3位から順位付けされる

引数「数値」が数値以外の値の場合、エラー値「#VALUE!」が表示。
引数「数値」が引数「参照」のセル範囲外にある場合、エラー値「#N/A」が表示。

【参考】RANKは「統計関数」

あくまで参考情報となりますが、RANKは統計関数です。

ただし、リボン「数式」タブの関数ライブラリ上では「その他の関数」の「互換性」に分類されています。
Excel2007以前のバージョン(Excel97-2003ブック(*.xls)含む)と互換性あり。

実際にRANKを活用する際は、以下で解説しているように直接入力で挿入していきましょう。

RANKの使用結果イメージ

RANKを使い、順位付けするイメージは以下の通りです。

今回は「金額」列を対象に順位を算出しました。

上記のように計算列としてRANKを使う場合、1レコードにつき1つの関数を使います。
「計算列」とは、数値/日付/時刻の列の値を計算した新たな列のこと。

ベースの数式をセットしたら、他のセルへペーストしましょう。

なお、今回は引数「参照」は全レコードでF2~F11セルを固定で参照するため、絶対参照にしています(テーブルの場合は不要)。

参考記事

絶対参照/相対参照の詳細については以下の記事をご参照ください。

【参考】引数「順序」を昇順にした場合

ちなみに、引数「順序」を「1」にすることで昇順での順位付けを行った場合、次の結果となります。

上記の通り、数値が小さい順に順位付けされます。

コストやミス率等、数値の小さい方が良い結果というデータの場合、昇順で順位付けすると良いでしょう。

RANKの数式の挿入手順

上記の結果を得るための手順は以下の通りです。

  1. 関数を挿入するセルを選択
    ※今回はG2セル
  2. =rank」等と入力
  3. サジェストから「RANK」を選択し、「Tab」キーで確定
  4. 順位を調べたい数値セルを選択
    ※今回はF2セル
  5. コンマ(,)を入力
  6. 順位を調べる対象のセル範囲を選択
    ※今回はF2~F11セル(絶対参照)
  7. Enter」キーで確定
  8. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はG3~G11セルへペースト

手順②の際にIMEを半角英数モードにすること。
テーブルの場合、手順⑧は不要(全レコードへ数式が自動的にコピーされる)。

【参考】RANKの後継関数は「RANK.EQ」と「RANK.AVG

RANKの後継の関数として、Excel2010からRANK.EQ」(ランク・イコール)RANK.AVG」(ランク・アベレージ)2種類の新しい関数が登場しました。

=RANK.EQ(数値,参照,[順序])
順序に従って範囲内の数値を並べ替えたとき、数値が何番目に位置するかを返します。複数の数値が同じ順位にある場合は、その値の中の最上位を返します。

=RANK.AVG(数値,参照,[順序])
順序に従って範囲内の数値を並べ替えたとき、数値が何番目に位置するかを返します。複数の数値が同じ順位にある場合は、順位の平均を返します。

この2つの関数の使い方はRANKと同じです(RANK.EQは戻り値もRANKと同じ)。

RANK.AVGの方は、同じ順位がある場合のみRANKRANK.EQ)と異なり、平均順位が返ります。

上記の例だと、「金額」列の中で「400」が3レコードあり、順位が7~9位の位置にあるため、その平均の「8」が3レコードの戻り値になっています。
計算式:(7+8+9)÷3=8

同じ順位の扱いを平均にしたい場合はRANK.AVGを使いましょう。

それ以外は互換性のあるRANKを使った方が無難だと思います。

サンプルファイルで練習しよう!

可能であれば、以下のサンプルファイルをダウンロードして、実際に操作練習をしてみてください。

サンプルファイル_ワークシート関数_RANK.xlsx

※サンプルファイルのダウンロードには無料メルマガに登録いただく必要があります。
(上記リンクから登録フォームへ遷移します)

ブックを開いたら、次の手順を実施してください。(今までの解説のまとめです)

  1. 関数を挿入するセルを選択
    ※今回はG2セル
  2. =rank」等と入力
  3. サジェストから「RANK」を選択し、「Tab」キーで確定
  4. 順位を調べたい数値セルを選択
    ※今回はF2セル
  5. コンマ(,)を入力
  6. 順位を調べる対象のセル範囲を選択
    ※今回はF2~F11セル(絶対参照)
  7. Enter」キーで確定
  8. 1行目の数式をコピーし、以降のセルへペースト
    ※今回はG3~G11セルへペースト

本記事の解説と同じ結果になればOKです!

さいごに

いかがでしたでしょうか?

RANKは数値データを元にした計算列の追加に役立つ関数の一つです。

定期的に順位付けを行う計算列を作成する機会があるなら、ぜひ覚えておいた方が良いですね。

なお、RANK以外にもExcelでのデータ整形の各種テクニックを拙著で解説していますので、こちらも参考にしてみてください。

ご参考になれば幸いですm(_ _)m

森田森田

RANKとセットで覚えておいた方が良い関数は、上位◯%等、百分率で相対的に順位付けできる「PERCENTRANK」です。
レコード数が多くて実数での順位では上位/下位が分かりにくくなる場合は、RANKよりPERCENTRANKの方がおすすめです。
ぜひ、ケースバイケースで使い分けてくださいね!