「データの中で、この値って全体の何%くらいの位置なんだろう?」。スプレッドシートで売上や成績を分析していると、こんな疑問が出てきますよね。
RANK関数で順位はわかっても、「上位何%か」はすぐにはわかりません。データの件数が変わるたびに計算し直すのも面倒です。
そんなときに使うのがスプレッドシートのPERCENTRANK.INC関数です。この記事では基本の書き方から実務での活用例まで解説します。PERCENTRANK関数との関係やPERCENTRANK.EXCとの違いもあわせて整理しました。
PERCENTRANK.INC関数とは?スプレッドシートでパーセント順位を返す関数
PERCENTRANK.INC関数(読み方: パーセントランク・インクルーシブ)は、データセットの中で指定した値が何%の位置にあるかを返す関数です。
INCは「Inclusive(包括的)」の略です。戻り値の範囲に0と1を含むのが特徴です。最小値は0、最大値は1を返します。
たとえば結果が0.75なら「下から75%の位置にある」という意味です。0なら最下位、1なら最上位です。
PERCENTRANK.INC関数にできることをまとめると、次のとおりです。
- データの中で値が何%の位置にあるかを求める(0と1を含む)
- 売上や成績の相対的な位置づけを数値で把握する
- PERCENTILE.INC関数と対で使って値とパーセントを相互変換する
- RANK.EQ関数では表せない「割合ベースの順位」を出す
NOTE
PERCENTRANK.INC関数はGoogleスプレッドシートとExcel(2010以降)で使えます。Excelとの互換性も問題ありません。
PERCENTRANK.INC関数の書き方(構文と引数)
基本構文
=PERCENTRANK.INC(データ, 値, [有効桁数])
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| データ | 必須 | パーセント順位を求める対象のセル範囲または配列 |
| 値 | 必須 | 順位を調べたい数値 |
| 有効桁数 | 任意 | 戻り値の有効桁数。省略すると3(小数第3位まで) |
引数の構成はPERCENTRANK関数とまったく同じです。実は、PERCENTRANK.INC関数はPERCENTRANK関数の後継として作られた関数です。結果もまったく同じになりますよ。
TIP
有効桁数は省略すると3桁です。データ件数が多いときは5〜6を指定すると、より細かい順位の差がわかります。
PERCENTRANK.INC関数の基本的な使い方
以下の売上データでPERCENTRANK.INC関数を使ってみましょう。
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.INC($B$2:$B$11, B2)
範囲を絶対参照($B$2:$B$11)にして、下にコピーしましょう。結果は以下のとおりです。
| 担当者 | 売上 | パーセント順位 | 意味 |
|---|---|---|---|
| 田中 | 120 | 0.333 | 下から33.3%の位置 |
| 鈴木 | 85 | 0 | 最小値なので0(最下位) |
| 佐藤 | 200 | 1 | 最大値なので1(最上位) |
| 山田 | 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%の位置 |
注目すべきポイントは2つあります。鈴木(最小値85)のパーセント順位が0になっています。佐藤(最大値200)は1です。これがINC(包括的)の特徴で、0と1を含む範囲で結果を返します。
計算のしくみ
PERCENTRANK.INC関数の計算式は (その値の昇順順位 - 1) / (データ件数 - 1) です。10件のデータなら分母は9になります。
- 最小値(85): (1 – 1) / 9 = 0
- 2番目(95): (2 – 1) / 9 = 0.111
- 5番目(130): (5 – 1) / 9 = 0.444
- 最大値(200): (10 – 1) / 9 = 1
分子が「順位 – 1」、分母が「データ件数 – 1」なので、最小値は必ず0、最大値は必ず1になるしくみです。
有効桁数を変えてみる
第3引数で結果の精度を変えられます。
=PERCENTRANK.INC($B$2:$B$11, B9, 1) → 0.4
=PERCENTRANK.INC($B$2:$B$11, B9, 3) → 0.444(デフォルト)
=PERCENTRANK.INC($B$2:$B$11, B9, 6) → 0.444444
データ件数が多いときは桁数を増やすと、順位の差がより正確に見えますよ。
PERCENTRANK.INC関数の実践的な使い方・応用例
売上データをパーセンタイルでランク分けする
パーセント順位をもとに、売上をS〜Dの5段階で評価してみましょう。IF関数と組み合わせます。
=IF(PERCENTRANK.INC($B$2:$B$11, B2)>=0.8, "S",
IF(PERCENTRANK.INC($B$2:$B$11, B2)>=0.6, "A",
IF(PERCENTRANK.INC($B$2:$B$11, B2)>=0.4, "B",
IF(PERCENTRANK.INC($B$2:$B$11, B2)>=0.2, "C", "D"))))
結果が0.8以上なら「S」、0.6以上なら「A」のように判定できます。RANK.EQ関数は人数が変わると基準の見直しが必要ですが、パーセント順位なら割合ベースなのでデータ件数に左右されません。
データ範囲にない値のパーセント順位を求める
PERCENTRANK.INC関数はデータ範囲内であれば、データに含まれない値も線形補間で計算できます。
=PERCENTRANK.INC(B2:B11, 100)
データ {85, 95, 110, …} の中に100はありませんが、95と110の間で補間されて結果が返ります。「もし売上が100万円だったら全体の何%の位置か」といった仮定の計算に使えますよ。
PERCENTILE.INC関数と組み合わせる
PERCENTRANK.INC関数とPERCENTILE.INC関数は入力と出力が逆の関係です。
=PERCENTILE.INC(B2:B11, 0.75) → 165(75パーセンタイルの値)
=PERCENTRANK.INC(B2:B11, 165) → 0.75(値165のパーセント順位)
INC同士で組み合わせると結果が正確に一致します。EXCとINCを混ぜると値がずれるので注意してください。
| 組み合わせ | 整合性 |
|---|---|
| PERCENTRANK.INC + PERCENTILE.INC | 一致する |
| PERCENTRANK.INC + PERCENTILE.EXC | ずれる |
| PERCENTRANK.EXC関数 + PERCENTILE.EXC | 一致する |
PERCENTRANK.INCとPERCENTRANK.EXCの違い
PERCENTRANK.INC関数とPERCENTRANK.EXC関数の最大の違いは、戻り値に0と1を含むかどうかです。
比較表
| 項目 | PERCENTRANK.INC | PERCENTRANK.EXC |
|---|---|---|
| 戻り値の範囲 | 0〜1(端点を含む) | 0より大〜1より小(端点を含まない) |
| 最小値の結果 | 0 | 1/(N+1) |
| 最大値の結果 | 1 | N/(N+1) |
| 計算式の分母 | N-1(データ件数-1) | N+1(データ件数+1) |
| INCの意味 | Inclusive(包括的) | Exclusive(排他的) |
| NORM.S.INVとの併用 | 端点で#NUM!エラー | エラーなし |
10件のデータで結果を比べる
先ほどの売上データ(10人分)で、両関数の結果を並べてみましょう。
| 担当者 | 売上 | PERCENTRANK.INC | PERCENTRANK.EXC | 差 |
|---|---|---|---|---|
| 鈴木 | 85 | 0 | 0.090 | +0.090 |
| 高橋 | 95 | 0.111 | 0.181 | +0.070 |
| 渡辺 | 110 | 0.222 | 0.272 | +0.050 |
| 田中 | 120 | 0.333 | 0.363 | +0.030 |
| 中村 | 130 | 0.444 | 0.454 | +0.010 |
| 加藤 | 140 | 0.555 | 0.545 | -0.010 |
| 山田 | 150 | 0.666 | 0.636 | -0.030 |
| 小林 | 160 | 0.777 | 0.727 | -0.050 |
| 伊藤 | 180 | 0.888 | 0.818 | -0.070 |
| 佐藤 | 200 | 1 | 0.909 | -0.091 |
端に近いほど差が大きく、中央付近ではほぼ同じ値になります。データ件数が増えるほど両者の差は小さくなりますよ。
どちらを使うべき?
使い分けの目安は以下のとおりです。
- PERCENTRANK.INC関数: 売上ランキング、成績の相対評価など通常の業務用途。直感的にわかりやすい
- PERCENTRANK.EXC関数: 偏差値計算やNORM.S.INV(正規分布の逆関数)との組み合わせ
迷ったらPERCENTRANK.INC関数を使えば大丈夫です。0と1が含まれるので「最下位=0%、最上位=100%」と直感的に理解できます。
PERCENTRANK.INC関数とPERCENTRANK関数の関係
PERCENTRANK.INC関数は、PERCENTRANK関数の後継関数です。結果はまったく同じになります。
=PERCENTRANK(B2:B11, B2) → 0.333
=PERCENTRANK.INC(B2:B11, B2) → 0.333
どちらを使っても構いませんが、新しく数式を書くときはPERCENTRANK.INC関数がおすすめです。INC(包括的)とEXC(排他的)のどちらを使っているか、関数名だけで判断できるためです。
PERCENTRANK関数の記事で基本的な使い方を詳しく解説しているので、あわせて参考にしてみてください。
よくあるエラーと対処法
#N/Aエラー
PERCENTRANK.INC関数で最もよく見るエラーです。
| 原因 | 対策 |
|---|---|
| 値がデータ範囲の最小値〜最大値の範囲外 | 範囲内の値を指定する |
| データ範囲に数値が1つもない | 数値が入った範囲を指定する |
データが {85, 95, 110} のとき、値に200を指定すると#N/Aになります。データ範囲外の値は処理できないので注意してください。
TIP
IFERROR関数で囲めばエラーを回避できます。
=IFERROR(PERCENTRANK.INC(B2:B11, B2), "範囲外")のように書くと安心ですよ。
#NUM!エラー
以下の場合に発生します。
- 有効桁数に1未満の値(0やマイナス)を指定した
- データ範囲が空(数値が1つもない)
有効桁数は1以上の整数を指定してください。
#VALUE!エラー
引数に文字列を指定すると発生します。値や有効桁数には数値を入力しましょう。
まとめ
PERCENTRANK.INC関数は、データセットの中で値が何%の位置にあるかを0と1を含む範囲で返す関数です。
この記事のポイント
- 構文は
=PERCENTRANK.INC(データ, 値, [有効桁数])の3引数 - 戻り値は0〜1の範囲(包括的)で、最小値=0、最大値=1
- 計算式は
(昇順順位 - 1) / (データ件数 - 1)で0と1を含む - PERCENTRANK関数と結果は同じ(INCは後継関数の正式名)
- PERCENTRANK.EXC関数との違いは端点(0と1)を含むかどうか
- PERCENTILE.INC関数と対で使うと結果が正確に一致する
関連する統計関数
PERCENTRANK.INC関数の使い方がわかったら、以下の関数もあわせて覚えてみてください。データ分析の幅が広がりますよ。
