ExcelのPERCENTRANK関数の使い方|百分位ランク(旧: PERCENTRANK.INC)
「営業10人の中で、自分の成績は下から何%の位置にいるんだろう」「30人クラスでこのテスト点数は上位何%なのか」——こうした「データの中での相対的な立ち位置を知りたい」場面で活躍するのが、ExcelのPERCENTRANK関数です。
PERCENTRANK関数は、指定した値がデータ全体の中で「下から何%の位置にあるか」を返す統計関数ですよ。結果は 0〜1 の小数で返ります。順位(1位・2位)ではなく割合で位置づけがわかるので、データ件数が違う集団どうしの比較にもそのまま使えます。
Excel 2007以前から提供されている互換性関数です。Excel 2010以降では PERCENTRANK.INC と PERCENTRANK.EXC の2関数が後継として用意されました。この記事では PERCENTRANK関数の構文と使い方を解説します。新関数との違い、テスト成績の相対順位、営業成績ランク分け、条件付き書式での自動ハイライトまで、実務で使える5パターンを揃えて紹介しますよ。
ExcelのPERCENTRANK関数とは
ExcelのPERCENTRANK関数は、データの中で指定した値が下から何%の位置にあるかを返す統計関数です。データを昇順に並べたとき、その値が最小値からどれくらいの相対位置にあるかを 0〜1 の小数で計算してくれますよ。
たとえば結果が 0.75 なら「下から75%の位置」、つまり上位25%に相当します。0 が最小値、1 が最大値です。
Excel 2007以前から提供されている古い関数で、現行のExcelでは「互換性関数」に分類されています。Excel 2010以降では後継として2つの関数が追加されましたよ。PERCENTRANK.INC(包括的)と PERCENTRANK.EXC(排他的)の2つです。
PERCENTRANKと新関数の比較表
| 項目 | PERCENTRANK(旧) | PERCENTRANK.INC(新・包括的) | PERCENTRANK.EXC(新・排他的) |
|---|---|---|---|
| 提供バージョン | Excel 2007以前 | Excel 2010以降 | Excel 2010以降 |
| 引数の数 | 2〜3個 | 2〜3個 | 2〜3個 |
| 結果の範囲 | 0以上1以下 | 0以上1以下 | 0より大きく1未満 |
| 計算式(分母) | n – 1 | n – 1 | n + 1 |
| PERCENTRANKとの結果 | — | 完全に一致 | 異なる(計算式が違う) |
| 位置づけ | 互換性関数 | 推奨関数(旧PERCENTRANK互換) | 推奨関数(別計算式) |
PERCENTRANKとPERCENTRANK.INCの違い
PERCENTRANKとPERCENTRANK.INCの違いは、名前だけです。引数の順番・意味・計算結果は完全に一致しますよ。
=PERCENTRANK(配列, x, [有効桁数]) ← 旧(互換性関数)
=PERCENTRANK.INC(配列, x, [有効桁数]) ← 新(推奨)
既存の =PERCENTRANK(...) を =PERCENTRANK.INC(...) に書き換えるだけで、結果は完全に同じになります。「INC」は Inclusive(包括的)の略で、結果の範囲が 0〜1 の両端を含むという意味ですよ。
どちらを使うべきか
新規ファイルを作るなら PERCENTRANK.INC を使うのが正解です。Excel 2010以降では =PER と入力したときの候補に PERCENTRANK.INC が優先表示されます。Microsoft も新関数の使用を推奨していますよ。
一方で、以下のケースでは PERCENTRANK をそのまま使い続けて問題ありません。
- Excel 2007以前のバージョンと共有するファイル(
.xls形式) - 既存の業務テンプレートに PERCENTRANK が組み込まれていてメンテナンスする場合
- 古いVBAマクロが PERCENTRANK を呼び出している場合
PERCENTRANK関数の構文と引数
PERCENTRANK関数の構文は次のとおりです。
=PERCENTRANK(配列, x, [有効桁数])
最初の2つが必須、3つ目は省略可能です。それぞれの意味と制約を表で整理しますよ。
| 引数名 | 必須/省略可 | 説明 | 制約 |
|---|---|---|---|
| 配列(array) | 必須 | 百分位ランクを求める対象のデータ範囲 | 数値が1つ以上必要(空のみは #NUM! エラー) |
| x | 必須 | 順位を調べたい値 | 配列の最小値以上・最大値以下(範囲外は #N/A エラー) |
| 有効桁数(significance) | 省略可 | 結果の有効桁数 | 1以上の整数。省略時は3桁 |
「有効桁数」は省略すると小数点以下3桁(0.xxx)で結果が返ります。たとえば 5 を指定すれば、0.xxxxx のように5桁まで表示されますよ。
=PERCENTRANK(A2:A11, 85) → 0.666(3桁)
=PERCENTRANK(A2:A11, 85, 5) → 0.66666(5桁)
精度が必要な場面では有効桁数を大きめに設定しておくと安心です。配列内の文字列・論理値・空白セルは無視されますよ。
PERCENTRANK関数の実務での活用例
テストの点数が上位何%か計算する(成績分析)
「30人クラスでこのテスト点数は上位何%か」を計算してみます。30人分のテスト成績が A2:A31 に入っていて、対象の点数が B2 セルにあるとしますね。
=PERCENTRANK(A2:A31, B2)
戻り値が 0.8 なら「下から80%の位置」、つまり上位20%に入っているということですよ。「1 から差し引くと上位の割合になる」と覚えておくと迷いません。
上位の割合(%) = (1 - PERCENTRANK の結果) × 100
戻り値 0.8 なら (1 - 0.8) × 100 = 20% で、上位20%に入っています。
営業10人全員の百分位ランクを一覧表示
各メンバーの百分位ランクを一覧で出したい場合は、データ範囲を絶対参照にして数式をコピーしますよ。
A2:A11 に売上データ、B列に各人のランクを表示する例です。
=PERCENTRANK($A$2:$A$11, A2)
データ範囲を絶対参照($A$2:$A$11)にするのがポイントです。こうすれば数式をコピーしてもデータ範囲がずれません。
| 売上(万円) | PERCENTRANK の結果 | 位置づけ |
|---|---|---|
| 50 | 0.000 | 最下位(最小値) |
| 60 | 0.111 | 下位12% |
| 70 | 0.222 | 下位23% |
| 80 | 0.333 | 下位34% |
| 90 | 0.444 | ほぼ中央 |
| 100 | 0.555 | 中央より上 |
| 110 | 0.666 | 上位34% |
| 120 | 0.777 | 上位23% |
| 130 | 0.888 | 上位12% |
| 140 | 1.000 | 最上位(最大値) |
最小値が 0、最大値が 1 になっているのが PERCENTRANK の特徴ですよ。
営業成績を S・A・B・C・D の5ランクに分ける
PERCENTRANK の結果を IFS関数と組み合わせると、相対評価のランク分けが自動化できます。
=IFS(
PERCENTRANK($A$2:$A$11, A2) >= 0.9, "S",
PERCENTRANK($A$2:$A$11, A2) >= 0.75, "A",
PERCENTRANK($A$2:$A$11, A2) >= 0.5, "B",
PERCENTRANK($A$2:$A$11, A2) >= 0.25, "C",
TRUE, "D"
)
ちょっと数式が長く見えますが、やっていることはシンプルです。上の条件から順にチェックして、最初に当てはまったランクを返しているだけですよ。「上位10%=S」「上位25%=A」「上位50%=B」「上位75%=C」「それ以下=D」という配分になります。
TIP
順位(RANK関数)でランク分けすると、データ件数が変わったときに基準を作り直す必要があります。PERCENTRANK は割合なので、人数が10人でも100人でも同じ「上位10%=S」の基準がそのまま使えますよ。
条件付き書式で上位25%を自動ハイライト
PERCENTRANK は条件付き書式のルールにも使えますよ。データが変わっても基準が自動更新されるので、手作業でのメンテナンスが不要になります。
- ハイライトしたいセル範囲(A2:A11)を選択する
- 「ホーム」タブ →「条件付き書式」→「新しいルール」
- 「数式を使用して、書式設定するセルを決定」を選択
- 数式に
=PERCENTRANK($A$2:$A$11, A2) >= 0.75と入力 - 書式で背景色を設定して「OK」
これで上位25%のデータが自動的にハイライトされます。リーダー会議の前に営業成績の上位を強調表示する、といった運用に便利ですよ。
IF関数でエラー対策しながら判定
PERCENTRANK は配列の範囲外の値を渡すと #N/A エラーになります。実務では IFERROR と組み合わせておくと安全ですよ。
=IFERROR(IF(PERCENTRANK($A$2:$A$11, B2) >= 0.75, "上位25%", "その他"), "範囲外")
B2 セルに配列の最小値〜最大値の範囲外の値が入っていたら「範囲外」と表示し、範囲内なら上位25%判定の結果を返します。新メンバーの予測値を入れて試算するときなど、データ範囲外になりやすい場面で重宝しますよ。
PERCENTRANK.EXCとの違い(包括的vs排他的)
PERCENTRANK.EXC は Excel 2010 で追加された別の計算方式の関数です。「EXC」は Exclusive(排他的)の略で、結果の両端(0と1)を含まないという意味ですよ。
PERCENTRANK / PERCENTRANK.INC と PERCENTRANK.EXC の違いを、具体的な数値で確認します。データ {10, 20, 30, 40, 50}(n=5)で x=10(最小値)の結果を比べてみますね。
| 関数 | 計算式 | 結果 |
|---|---|---|
| PERCENTRANK | 0 ÷ (5 – 1) = 0 | 0 |
| PERCENTRANK.INC | 同上 | 0 |
| PERCENTRANK.EXC | 1 ÷ (5 + 1) = 約0.166 | 0.166 |
PERCENTRANK / PERCENTRANK.INC は最小値で 0、最大値で 1 を返します。一方 PERCENTRANK.EXC は端点が 0 にも 1 にもなりません。
| 用途 | 推奨関数 |
|---|---|
| 既存の PERCENTRANK 数式の互換維持 | PERCENTRANK.INC |
| 一般的なビジネス分析(成績ランク・営業評価など) | PERCENTRANK.INC |
| 統計学の教科書通りの「両端を除いた」計算 | PERCENTRANK.EXC |
実務では PERCENTRANK / PERCENTRANK.INC を使うケースが圧倒的に多いです。PERCENTRANK.EXC は統計の専門分野で「両端を含めない計算が必要な場合」のみ選ぶ、と覚えておけば十分ですよ。
PERCENTILE関数との使い分け
PERCENTRANK と PERCENTILE は逆関数の関係にあります。入力と出力が逆なので、用途で使い分ければ迷いませんよ。
| 関数 | 入力 | 出力 |
|---|---|---|
| PERCENTRANK | データ値 → | 百分位ランク(0〜1の小数) |
| PERCENTILE | 百分位(0〜1の小数)→ | データ値 |
「値からランクを調べる」ときは PERCENTRANK、「ランクから値を調べる」ときは PERCENTILE と覚えておきましょう。
実際に逆関数の関係を確認してみます。データ {50, 60, 70, 80, 90, 100, 110, 120, 130, 140} で 90 の位置を調べ、その結果を PERCENTILE に渡すと元の値(90)に戻りますよ。
=PERCENTILE(A2:A11, PERCENTRANK(A2:A11, 90))
→ 結果は 90
この関係を理解しておくと、双方向の問いに答えられるようになります。「上位N%の境界点はいくらか(PERCENTILE)」と「この値は上位何%か(PERCENTRANK)」のどちらの聞き方にも対応できますよ。
RANK系関数との違い
RANK / RANK.EQ / RANK.AVG は「何位か」を整数で返します。一方 PERCENTRANK は「下から何%の位置か」を0〜1の小数で返しますよ。
| 項目 | PERCENTRANK | RANK / RANK.EQ / RANK.AVG |
|---|---|---|
| 返す値 | 百分位ランク(0〜1の小数) | 順位(1, 2, 3…の整数) |
| データ件数への依存 | 割合なので件数が違っても比較できる | 件数が違うと比較しにくい |
| 用途 | 相対的な立ち位置の把握 | 「何位か」を知りたいとき |
10人中3位と100人中30位は同じ「上位3割」の位置づけです。ただ RANK系関数だと「3」と「30」で見た目の数字が違いますよね。PERCENTRANK ならどちらも約 0.77(上位23%)と同じ値になります。そのため、異なるデータセット間の比較に向いていますよ。
「クラス別のテスト成績で、どのクラスでも『上位10%=S』の絶対基準を使いたい」のような場面では PERCENTRANK が有利です。
PERCENTRANKでよくあるエラーと対処法
PERCENTRANK関数で起きやすいエラーをまとめます。
| エラー | 主な原因 | 対処法 |
|---|---|---|
#N/A | x が配列の最小値未満または最大値超 | x が配列内の範囲に収まっているか確認する |
#NUM! | 配列が空、または有効桁数に1未満を指定した | 配列にデータが入っているか、有効桁数が1以上の整数か確認する |
#VALUE! | x や有効桁数に文字列など数値以外を指定した | 数値またはセル参照で指定する |
#NAME? | 関数名のスペルミス | 「PERCENTRANK」(ピリオドなし)と入力する |
| エラー値の伝播 | 配列内に #N/A や #DIV/0! が含まれる | エラー値を取り除くか、IFERROR で処理する |
最もよく起きるのが「x が配列の範囲外で #N/A」です。たとえばデータが {50, 60, 70, 80, 90} のとき、x=40 や x=100 を指定すると範囲外になり #N/A が返りますよ。
=PERCENTRANK(A2:A6, 40) → #N/A(最小値50未満)
=PERCENTRANK(A2:A6, 100) → #N/A(最大値90超)
IFERROR で包んでおくと、わかりやすいメッセージに変換できます。
=IFERROR(PERCENTRANK(A2:A11, B2), "範囲外の値です")
PERCENTRANK.INCへの移行ガイド
既存の PERCENTRANK 数式を新関数 PERCENTRANK.INC に書き換える手順は次のとおりです。
| 旧関数の数式 | 新関数の数式(同等) |
|---|---|
=PERCENTRANK(A2:A31, B2) | =PERCENTRANK.INC(A2:A31, B2) |
=PERCENTRANK($A$2:$A$11, A2) | =PERCENTRANK.INC($A$2:$A$11, A2) |
=PERCENTRANK(売上, B2, 5) | =PERCENTRANK.INC(売上, B2, 5) |
引数の変更は不要で、関数名の部分だけ書き換えれば完了ですよ。計算結果は完全に同じです。
一括置換の手順:
- Ctrl + H(置換ダイアログ)を開く
- 検索する文字列:
PERCENTRANK( - 置換後の文字列:
PERCENTRANK.INC( - 「すべて置換」
- いくつかのセルで結果が変わっていないことを確認する
検索文字列を PERCENTRANK( のように 末尾の左かっこまで含める のがコツですよ。こうすれば既存の PERCENTRANK.INC( や PERCENTRANK.EXC( を誤って書き換えてしまうのを防げます。
まとめ:PERCENTRANK関数で相対的な立ち位置を把握しよう
ExcelのPERCENTRANK関数のポイントを整理します。
- PERCENTRANK関数はデータ内での値の百分位ランク(下から何%の位置)を返す旧版(互換性関数)
- 構文は
=PERCENTRANK(配列, x, [有効桁数])で、有効桁数は省略時に3桁 - 結果は 0〜1の小数(最小値で0、最大値で1)
- Excel 2010以降の後継は PERCENTRANK.INC(同じ計算)と PERCENTRANK.EXC(別計算式)
- 移行は関数名部分を
PERCENTRANK(→PERCENTRANK.INC(に書き換えるだけ - PERCENTILE関数 とは逆関数の関係(値→ランクが PERCENTRANK、ランク→値が PERCENTILE)
- RANK系関数と違い、件数の異なる集団どうしの比較に強い
「データの中での立ち位置を割合で把握する」感覚が身につくと、順位だけでは見えにくかった集団間の比較や、変動するデータでの相対評価が一気にラクになりますよ。まずは「自分の成績は上位何%か」を出す一場面から、PERCENTRANK を試してみてくださいね。
統計関数のシリーズ記事として、PERCENTILE関数、NORMDIST関数、NORMINV関数、NORMSDIST関数、NORMSINV関数 も合わせて読むと、Excelの統計関数全体の見通しがよくなりますよ。
