「この売上って、全体の中でどのくらいの位置なの?」。データを見ていて、こんな疑問が浮かぶことはありませんか?
RANK関数で順位はわかっても「上から何%の位置か」は一目ではわかりません。データの相対的な位置づけを把握したい場面は意外と多いですよね。
そんなときに使うのがスプレッドシートのPERCENTRANK関数です。この記事では基本の書き方から実務での活用例まで解説します。PERCENTILE関数との関係やPERCENTRANK.EXCとの違いもあわせて整理しました。
PERCENTRANK関数とは?スプレッドシートでパーセント順位を返す関数
PERCENTRANK関数(読み方: パーセントランク)は、データセットの中で指定した値が何%の位置にあるかを返す関数です。
PERCENTは「百分率」、RANKは「順位」を意味します。つまり「百分率での順位」を求める関数です。
戻り値は0〜1の範囲です。0が最小値、1が最大値の位置を表します。たとえば結果が0.75なら「下から75%の位置(上位25%)」ということです。
PERCENTRANK関数にできることをまとめると、次のとおりです。
- データの中で値が何%の位置にあるかを求める
- 売上や成績の相対的なポジションを把握する
- 異なるスケールのデータを0〜1で正規化して比較する
- PERCENTILE関数の逆方向の計算を行う
NOTE
PERCENTRANK関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も問題ありません。
PERCENTRANK関数の書き方(構文と引数)
基本構文
=PERCENTRANK(データ, 値, [有効桁数])
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データ | 必須 | パーセント順位を求める対象のセル範囲または配列 |
| 値 | 必須 | 順位を調べたい数値 |
| 有効桁数 | 任意 | 戻り値の有効桁数。省略すると3(小数第3位まで) |
第3引数の「有効桁数」は結果の精度を指定します。省略すると3桁です。たとえば本来の計算結果が0.55555…の場合、有効桁数3なら「0.555」が返ります。
TIP
有効桁数を大きくすると、より細かい順位の差がわかります。データ件数が多いときは5〜6を指定すると精度が上がりますよ。
PERCENTRANK関数の基本的な使い方
以下の売上データでPERCENTRANK関数を使ってみましょう。
B2からB11に10人分の売上データが入っているとします。
| A列(担当者) | B列(売上) | |
|---|---|---|
| 2行目 | 田中 | 120 |
| 3行目 | 鈴木 | 85 |
| 4行目 | 佐藤 | 200 |
| 5行目 | 山田 | 150 |
| 6行目 | 高橋 | 95 |
| 7行目 | 伊藤 | 180 |
| 8行目 | 渡辺 | 110 |
| 9行目 | 中村 | 130 |
| 10行目 | 小林 | 160 |
| 11行目 | 加藤 | 140 |
各担当者のパーセント順位を求める
C2セルに以下の数式を入力します。
=PERCENTRANK($B$2:$B$11, B2)
範囲を絶対参照($B$2:$B$11)にして、下にコピーしましょう。結果は以下のとおりです。
| 担当者 | 売上 | パーセント順位 | 意味 |
|---|---|---|---|
| 田中 | 120 | 0.333 | 下から33.3%の位置 |
| 鈴木 | 85 | 0 | 最下位(0%) |
| 佐藤 | 200 | 1 | 最上位(100%) |
| 山田 | 150 | 0.666 | 下から66.6%の位置 |
| 高橋 | 95 | 0.111 | 下から11.1%の位置 |
| 伊藤 | 180 | 0.888 | 下から88.8%の位置 |
| 渡辺 | 110 | 0.222 | 下から22.2%の位置 |
| 中村 | 130 | 0.444 | 下から44.4%の位置 |
| 小林 | 160 | 0.777 | 下から77.7%の位置 |
| 加藤 | 140 | 0.555 | 下から55.5%の位置 |
佐藤(売上200)のパーセント順位は1で最上位です。鈴木(売上85)は0で最下位です。
計算のしくみ
PERCENTRANK関数は、データを昇順に並べて各値の位置を0〜1にマッピングします。
計算式は (その値の順位) / (データ件数 - 1) です。10件のデータなら分母は9になります。
- 最小値(85): 0 / 9 = 0
- 2番目(95): 1 / 9 = 0.111
- 5番目(130): 4 / 9 = 0.444
- 最大値(200): 9 / 9 = 1
値がデータセットに存在しない場合は、前後の値から線形補間で計算します。関数が自動で行うので、計算方法を覚える必要はありません。
有効桁数を変えてみる
第3引数で結果の精度を変えられます。
=PERCENTRANK($B$2:$B$11, B9, 1) → 0.4
=PERCENTRANK($B$2:$B$11, B9, 3) → 0.444(デフォルト)
=PERCENTRANK($B$2:$B$11, B9, 6) → 0.444444
有効桁数1だと大まかな位置、6だと細かい位置がわかります。
PERCENTRANK関数の実践的な使い方・応用例
成績の相対評価に使う
テスト点数のパーセント順位を求めれば「クラス全体の中でどの位置か」がひと目でわかります。
=PERCENTRANK($B$2:$B$31, B2)
結果が0.8以上なら上位20%、0.5なら真ん中です。偏差値のようなイメージで成績を評価できます。
IF関数と組み合わせれば、ランク分けも簡単です。
=IF(PERCENTRANK($B$2:$B$31, B2)>=0.8, "A",
IF(PERCENTRANK($B$2:$B$31, B2)>=0.6, "B",
IF(PERCENTRANK($B$2:$B$31, B2)>=0.4, "C",
IF(PERCENTRANK($B$2:$B$31, B2)>=0.2, "D", "E"))))
この数式で上位20%がA、次の20%がBと均等にランク分けできます。
売上の相対位置を可視化する
複数店舗の売上を0〜1のスケールで比較するときに便利です。
| 店舗 | 売上 | パーセント順位 | 評価 |
|---|---|---|---|
| 新宿店 | 500 | 1 | 最上位 |
| 渋谷店 | 420 | 0.75 | 上位 |
| 池袋店 | 380 | 0.5 | 中位 |
| 品川店 | 350 | 0.25 | 中下位 |
| 上野店 | 300 | 0 | 最下位 |
「渋谷店は下から75%の位置(上位25%)」「品川店は下から25%」と具体的にわかります。
よくあるエラーと対処法
#N/Aエラー
PERCENTRANK関数で最もよく見るエラーです。
| 原因 | 対策 |
|---|---|
| 値がデータ範囲の最小値〜最大値の範囲外 | 範囲内の値を指定する |
| データ範囲に数値が1つもない | 数値が入った範囲を指定する |
データが {50, 100, 150} のとき、値に200を指定すると#N/Aです。PERCENTRANK関数はデータ範囲外の値を処理できません。
TIP
IFERROR関数で囲めばエラーを回避できます。
=IFERROR(PERCENTRANK(B2:B11, B2), "範囲外")のように書くと安心です。
#NUM!エラー
有効桁数に1未満の値(0やマイナス)を指定すると発生します。有効桁数は1以上の整数を指定してください。
#VALUE!エラー
引数に文字列を指定すると発生します。値や有効桁数には数値を入力してください。
PERCENTILE関数との関係・PERCENTRANK.EXCとの違い
PERCENTILE関数との逆関係
PERCENTRANK関数とPERCENTILE関数は、入力と出力が逆の関係です。
| 項目 | PERCENTRANK | PERCENTILE |
|---|---|---|
| 入力 | データ + 値 | データ + パーセンタイル |
| 出力 | パーセント順位(0〜1) | パーセンタイル位置の値 |
| 用途 | 「この値は何%の位置?」 | 「上位○%のラインは何点?」 |
たとえば、先ほどの売上データで以下の関係が成り立ちます。
=PERCENTILE(B2:B11, 0.75) → 157.5(75パーセンタイルの値)
=PERCENTRANK(B2:B11, 157.5) → 0.75(値157.5のパーセント順位)
どちらの関数を使うかは「知りたいものが何か」で決まります。
- 値がわかっていて順位を知りたい → PERCENTRANK関数
- 順位(%)がわかっていて値を知りたい → PERCENTILE関数
RANK関数との違い
RANK.EQ関数やRANK.AVG関数は「何位」という整数の順位を返します。一方、PERCENTRANK関数は0〜1のパーセント順位です。
| 項目 | RANK系関数 | PERCENTRANK |
|---|---|---|
| 戻り値 | 整数の順位(1位、2位…) | 0〜1のパーセント順位 |
| スケール | データ件数に依存 | 常に0〜1 |
| 比較 | 同じデータ内でのみ有効 | 異なるデータ間でも比較しやすい |
データ件数が異なるグループ間で順位を比較するなら、PERCENTRANK関数が便利です。
PERCENTRANK.EXCとの違い
スプレッドシートにはPERCENTRANK関数の派生版があります。
| 関数 | 戻り値の範囲 | 説明 |
|---|---|---|
| PERCENTRANK | 0〜1 | 標準版。0(最小値)と1(最大値)を含む |
| PERCENTRANK.EXC | 0より大〜1より小 | 0と1を除外する。統計的にはこちらが厳密 |
PERCENTRANK.EXCは、最小値でも0にならず最大値でも1にならない計算方法を使います。統計学的にはEXCのほうが厳密ですが、通常の業務ではPERCENTRANK関数で十分です。
PERCENTILE関数にも同じ関係のPERCENTILE.EXC関数とPERCENTILE.INC関数があります。
まとめ
PERCENTRANK関数は、データセットの中で値が何%の位置にあるかを返す関数です。
この記事のポイント
- 構文は
=PERCENTRANK(データ, 値, [有効桁数])の3引数 - 戻り値は0〜1の範囲。0が最小値、1が最大値の位置
- 有効桁数は省略すると3(小数第3位まで)
- PERCENTILE関数の逆:値→パーセント順位を返す
- PERCENTRANK.EXCは0と1を除外するバリエーション
- 売上や成績の相対的な位置づけの把握に最適
次のステップ:関連する統計関数
PERCENTRANK関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
