PERCENTRANK.INC関数とは
「この売上データは全体の中でどれくらいの位置にあるんだろう?」
「テストの点数が上位何%に入るか、サッと確認したい…」
こんな場面で、手作業でデータを並べ替えて順位を計算していませんか。件数が増えるほど面倒ですし、ミスも出やすいですよね。
ExcelのPERCENTRANK.INC関数を使えば、数式ひとつでデータの百分位ランク(パーセント順位)を求められます。この記事では基本の書き方から実践例、似た関数との違いまで丁寧に解説します。
INCの意味(Inclusive=0と1を含む)
PERCENTRANK.INCの読み方は「パーセントランク・インク」です。INCは「Inclusive(包括的)」の略で、結果に0と1を含むという意味があります。
百分位ランクとは、データを小さい順に並べたとき「指定した値が下から何%の位置にあるか」を示す指標です。結果は0~1の小数で返されます。たとえば0.75なら「下から75%の位置」、つまり上位25%に相当します。
PERCENTRANK.INC関数はデータの最小値に対して0、最大値に対して1を返す点が特徴です。
旧PERCENTRANK関数との関係と互換性
Excel 2007以前には「PERCENTRANK」という関数がありました。PERCENTRANK.INC関数はExcel 2010で追加された後継関数です。
旧PERCENTRANK関数と計算結果は完全に一致します。つまり互換性は100%です。ただし旧関数はMicrosoftが非推奨としており、将来廃止されるリスクがあります。新しく数式を作るときはPERCENTRANK.INCを使いましょう。
対応バージョンはExcel 2010以降(Microsoft 365 / 2024 / 2021 / 2019 / 2016)です。
PERCENTRANK.INC関数の書き方と引数
基本構文
まずは基本の書き方を確認しましょう。
=PERCENTRANK.INC(array, x, [significance])
引数は3つあり、最初の2つが必須です。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| array | 必須 | 百分位ランクを求めたいデータ範囲 |
| x | 必須 | 順位を調べたい値 |
| significance | 省略可 | 結果の有効桁数(省略時は3桁) |
引数の詳細
array(データ範囲) には、数値データが入ったセル範囲を指定します。文字列や空白セルは無視されます。
x(値) には、データ範囲内の特定の値を指定します。範囲内に存在しない値でも、最小値と最大値の間であれば補間計算で結果を返します。
significance(有効桁数) は省略可能です。省略すると小数点以下3桁(0.xxx)で結果が返ります。たとえばsignificance=5と指定すれば、0.xxxxxのように5桁まで表示されます。
=PERCENTRANK.INC(A2:A11, 85) → 0.666(3桁)
=PERCENTRANK.INC(A2:A11, 85, 5) → 0.66666(5桁)
精度が必要な場面ではsignificanceを大きめに設定しておくと安心です。
PERCENTRANK.INC関数の使い方【実践5パターン】
売上データの百分位ランクを求める
営業チーム10人の月間売上データから、特定メンバーの百分位ランクを確認してみましょう。
セルA2:A11に売上データ{50, 60, 70, 80, 90, 100, 110, 120, 130, 140}(単位:万円)が入っているとします。B2に対象メンバーの売上(たとえば90万円)が入っている場合、次の数式を使います。
=PERCENTRANK.INC(A2:A11, B2)
結果は0.444です。つまり90万円は下から約44.4%の位置にあることがわかります。
計算の仕組みを確認しましょう。データを小さい順に並べると、90は5番目(0始まりで4番目)です。百分位ランク = 4 /(10 – 1)= 0.444…となります。
全員の百分位ランクを一括算出
各メンバーの百分位ランクを一覧で出したい場合は、B2に次の数式を入力してB11までコピーします。
=PERCENTRANK.INC($A$2:$A$11, A2)
データ範囲を絶対参照($A$2:$A$11)にするのがポイントです。こうすれば数式をコピーしてもデータ範囲がずれません。
| 売上(万円) | 百分位ランク |
|---|---|
| 50 | 0(最小値) |
| 60 | 0.111 |
| 70 | 0.222 |
| 80 | 0.333 |
| 90 | 0.444 |
| 100 | 0.555 |
| 110 | 0.666 |
| 120 | 0.777 |
| 130 | 0.888 |
| 140 | 1(最大値) |
最小値は0、最大値は1になっていますね。これがINC(Inclusive)の特徴です。
PERCENTILE.INCとの逆関数の関係を活用する
PERCENTRANK.INC関数とPERCENTILE.INC関数は逆関数の関係にあります。
- PERCENTILE.INC: 百分位(0~1の値)を指定して、その位置にあるデータ値を返す
- PERCENTRANK.INC: データ値を指定して、その値の百分位ランク(0~1の値)を返す
つまり、一方の出力をもう一方に入力すると元の値に戻ります。
=PERCENTILE.INC(A2:A11, PERCENTRANK.INC(A2:A11, 90))
この数式の結果は90になります。PERCENTRANK.INCで90の百分位ランクを求め、それをPERCENTILE.INCに渡して元の値に復元しているわけです。
この関係を理解しておくと、「値からランクを調べる」「ランクから値を調べる」を自在に切り替えられます。
IF関数と組み合わせて上位/下位を判定
PERCENTRANK.INC関数の結果を使って、データを「上位グループ」と「下位グループ」に分類してみましょう。
=IF(PERCENTRANK.INC($A$2:$A$11, A2) >= 0.75, "上位25%", "その他")
百分位ランクが0.75以上なら上位25%と判定します。
もう少し細かくランク分けしたい場合はIFS関数を使います。
=IFS(
PERCENTRANK.INC($A$2:$A$11, A2) >= 0.9, "S",
PERCENTRANK.INC($A$2:$A$11, A2) >= 0.75, "A",
PERCENTRANK.INC($A$2:$A$11, A2) >= 0.5, "B",
PERCENTRANK.INC($A$2:$A$11, A2) >= 0.25, "C",
TRUE, "D"
)
ちょっと数式が長く見えますが、やっていることはシンプルです。上の条件から順にチェックして、最初に当てはまったランクを返しているだけですよ。
条件付き書式で上位をハイライト
PERCENTRANK.INC関数は条件付き書式のルールにも使えます。
- ハイライトしたいセル範囲(A2:A11)を選択
- 「ホーム」タブ →「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選択
- 数式に
=PERCENTRANK.INC($A$2:$A$11, A2) >= 0.75と入力 - 書式で背景色を設定して「OK」
これで上位25%のデータが自動的にハイライトされます。データが変わっても基準が自動更新されるので、手作業でのメンテナンスが不要になります。
よくあるエラーと対処法
#N/Aエラー
PERCENTRANK.INC関数で最もよく見かけるのが#N/Aエラーです。
- xがarrayの最小値未満または最大値超: データ範囲外の値を指定するとエラーになります。xがデータ範囲内にあるか確認してください
たとえばデータが{50, 60, 70, 80, 90}のとき、x=40やx=100を指定すると#N/Aエラーです。
=PERCENTRANK.INC(A2:A6, 40) → #N/A(最小値50未満)
=PERCENTRANK.INC(A2:A6, 100) → #N/A(最大値90超)
#NUM!エラー
arrayが空のとき(データが1件もない場合)に#NUM!エラーが発生します。対象範囲にデータが入っているか確認しましょう。
また、significance(有効桁数)に1未満の値を指定した場合もエラーになります。significanceは1以上の整数を指定してください。
エラーを事前に防ぐ方法
エラーが出る可能性があるセルにはIFERROR関数を組み合わせておくと安全です。
=IFERROR(PERCENTRANK.INC(A2:A11, B2), "範囲外の値です")
この書き方なら、エラー発生時にわかりやすいメッセージを表示できます。
似た関数との違い・使い分け
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 | n + 1 |
| Excel対応 | 2010~(推奨) | 2010~ |
実際にデータ{10, 20, 30, 40, 50}(n=5)でx=10(最小値)の結果を比べてみましょう。
- PERCENTRANK.INC: 0 /(5 – 1)= 0
- PERCENTRANK.EXC: 1 /(5 + 1)= 0.166
INCでは最小値が0、最大値が1になりますが、EXCでは0と1にはなりません。
迷ったらPERCENTRANK.INC関数を選べばOKです。理由は3つあります。
- 結果が0~1の範囲でわかりやすい
- 旧PERCENTRANK関数と互換性がある
- 一般的なビジネスシーンではINCの方が直感的
PERCENTRANK.EXC関数は、統計分野でn+1分割の計算方式が求められる場面で使います。
PERCENTRANK.INCとRANK系関数の違い
RANK.EQ関数やRANK.AVG関数は「何位か」を整数で返しますが、PERCENTRANK.INC関数は「下から何%の位置か」を0~1の小数で返します。
| 項目 | PERCENTRANK.INC | RANK.EQ / RANK.AVG |
|---|---|---|
| 返す値 | 百分位ランク(0~1の小数) | 順位(1, 2, 3…の整数) |
| データ数への依存 | 割合なので比較しやすい | データ数が違うと比較しにくい |
| 用途 | 相対的な位置づけの把握 | 何位かを知りたいとき |
10人中3位と100人中30位は同じ位置づけですが、RANK関数だと「3」と「30」で数字が違います。PERCENTRANK.INC関数ならどちらも約0.77(上位約23%)と同じ値になるため、異なるデータセット間の比較に便利です。
PERCENTRANK.INCとPERCENTILE.INCの関係
PERCENTILE.INC関数はPERCENTRANK.INC関数の逆関数です。
| 関数 | 入力 | 出力 |
|---|---|---|
| PERCENTRANK.INC | データ値 → | 百分位ランク(0~1) |
| PERCENTILE.INC | 百分位(0~1) → | データ値 |
「値からランクを調べる」ときはPERCENTRANK.INC、「ランクから値を調べる」ときはPERCENTILE.INCと覚えておきましょう。
まとめ
PERCENTRANK.INC関数は「データの中で指定した値が下から何%の位置にあるか」を求める関数です。
ポイントを整理しておきましょう。
- 構文は
=PERCENTRANK.INC(array, x, [significance])で、結果は0~1の小数で返る - INCは「Inclusive」の略で、最小値=0、最大値=1を含む点が特徴
- 旧PERCENTRANK関数と完全互換だが、新規作成ではPERCENTRANK.INCを使う
- PERCENTRANK.EXC関数とは分母が異なり、端点の扱いが変わる
- PERCENTILE.INC関数とは逆関数の関係にある
営業成績の相対評価やテスト結果の位置づけ確認など、データの中での立ち位置を知りたい場面でぜひ活用してみてください。
Googleスプレッドシートでも同じ関数が使えます。詳しくはスプレッドシートのPERCENTRANK.INC関数の使い方の記事を参考にしてください。
