ExcelのPERCENTRANK.EXC関数の使い方|百分位ランク(除く)

スポンサーリンク

ExcelのPERCENTRANK.EXC関数とは?百分位ランクの「除く」型を求める関数

「テストの点数が、全体の中で上位何%に位置するか統計的に出したい」
「売上データの中で特定の値が、端を除いた方式で何パーセンタイルにあたるか知りたい」

こんな場面で「.INC」と「.EXC」のどちらを使うか迷ったことはありませんか。

この記事ではPERCENTRANK.EXC関数の使い方を、INC関数との数値比較を交えて解説します。kの計算方式やsignificance引数の使い方、よくあるエラーの対処法までしっかり押さえていきましょう。

読み方と語源(EXC=Exclusive=0%と100%を除く)

PERCENTRANK.EXC関数の読み方は「パーセントランク・エクスク」または「パーセントランク・エクスクルーシブ」です。EXCは「Exclusive(排他的)」の略で、0%と100%の端点を含まないという意味があります。

百分位ランクとは、データの中でその値が「下から何%の位置にあるか」を示す統計指標です。たとえばランク0.5なら「下から50%の位置」、ランク0.9なら「下から90%の位置」にあたります。

PERCENTRANK.EXC関数は、この百分位ランクを「端点を除外する」方式で計算する関数です。対応バージョンはExcel 2010以降で、Microsoft 365でも問題なく使えます。

「含む(INC)」と「除く(EXC)」の違いを先に把握する

PERCENTRANK関数には「.INC」と「.EXC」の2種類があります。違いをざっくりまとめると次のとおりです。

関数意味返すランクの範囲
PERCENTRANK.INCInclusive(含む)0以上1以下
PERCENTRANK.EXCExclusive(除く)0より大きく1より小さい

INCは最小値で0、最大値で1を返してくれますが、EXCは両端を絶対に返しません。さらに同じ値を指定しても、計算式が違うため返されるランクが変わってきます。

「結局どっちを使えばいいの?」と思いますよね。基本的にはINC関数で十分ですが、統計の教科書や品質管理の現場で「端を除く方式」が指定されている場合はEXC関数の出番です。詳しい比較はPERCENTRANK.INC関数の記事も合わせて読んでみてください。

PERCENTRANK.EXC関数の書き方(構文と引数)

基本構文

まずは基本の書き方を確認しましょう。引数は3つで、最後のsignificanceだけ省略可能です。

=PERCENTRANK.EXC(array, x, [significance])
引数必須/省略可説明
array必須百分位ランクを求めるデータ範囲
x必須ランクを求めたい値
significance省略可結果の有効桁数(省略時は3桁)

arrayにはセル範囲(A2:A11など)を指定し、xにはランクを求めたい値を渡します。significanceは小数点以下の有効桁数で、省略すると3桁(小数点第3位まで)で返されます。

significance引数の使い方

significance引数は、結果の桁数を制御するためのオプションです。

=PERCENTRANK.EXC(A2:A11, 75)       → 0.687(省略時は3桁)
=PERCENTRANK.EXC(A2:A11, 75, 4)    → 0.6875(4桁指定)
=PERCENTRANK.EXC(A2:A11, 75, 5)    → 0.68750(5桁指定)

ふだんの業務なら省略してOKです。論文や品質管理の報告書など、桁数を厳密に揃えたい場合だけ指定すれば大丈夫です。

なお、significanceに1未満の値(0.5など)を指定すると#NUM!エラーになります。整数で指定するのが安全ですよ。

PERCENTRANK.EXC関数の基本的な使い方

サンプルデータでランクを求める

実際にPERCENTRANK.EXC関数を使ってみましょう。セルA2:A6に5人分のテスト点数{60, 70, 80, 90, 100}が昇順で入っているとします。

90点が全体の中でどの位置にあるかを求める数式はこうです。

=PERCENTRANK.EXC(A2:A6, 90)

結果は0.666になります。「上から2番目の値なのに66.6%なの?」と思うかもしれませんが、これがEXC方式の特徴なんです。

PERCENTRANK.EXC関数の計算式は次のとおりです。

ランク = (値より小さいデータの個数 + 1) ÷ (n + 1)
     = (3 + 1) ÷ (5 + 1)
     = 4 ÷ 6
     = 0.666...

90より小さい値は{60, 70, 80}の3個。ここに1を足して4、それをデータ件数+1の6で割って約0.666、というロジックです。

中央の値(80点)のランク

同じデータで80点のランクも見てみましょう。

=PERCENTRANK.EXC(A2:A6, 80)

結果は0.5です。計算過程はこう。

ランク = (2 + 1) ÷ (5 + 1)
     = 3 ÷ 6
     = 0.5

80より小さい値は{60, 70}の2個。ここに1を足して3、データ件数+1の6で割って0.5、つまり中央のランクが返ります。データの個数が奇数のときは、中央の値とPERCENTRANK.EXC関数の結果0.5が一致します。

データに存在しない値のランク(線形補間)

PERCENTRANK.EXC関数は、データ範囲に存在しない値でもランクを返してくれます。たとえば85点のランクを求めると次のようになります。

=PERCENTRANK.EXC(A2:A6, 85)

結果は0.583です。85は80(ランク0.5)と90(ランク0.666)の中間の値なので、線形補間で計算されます。

0.5 + 0.5 × (0.666 - 0.5) = 0.583

このようにPERCENTRANK.EXC関数は、xに指定した値がデータ範囲内に無くても、前後の値を使って補間しながらランクを返してくれます。

PERCENTRANK.EXCとPERCENTRANK.INCの違い【数値比較】

計算式の違い

PERCENTRANK.INC関数とPERCENTRANK.EXC関数は、ランクの計算式が違います。

関数ランクの計算式
PERCENTRANK.INC(値より小さいデータの個数) ÷ (n – 1)
PERCENTRANK.EXC(値より小さいデータの個数 + 1) ÷ (n + 1)

INCは「小さい個数 ÷ (n-1)」、EXCは「(小さい個数 + 1) ÷ (n+1)」。分子と分母が両方違うのがポイントです。同じデータでも結果が変わってくる原因はここにあります。

同じデータでの結果比較

データ{60, 70, 80, 90, 100}(n=5)でINCとEXCの結果を並べてみましょう。

PERCENTRANK.EXCPERCENTRANK.INC
60(最小値)0.1660(=0/4)
700.3330.25(=1/4)
80(中央値)0.50.5(一致)
900.6660.75(=3/4)
100(最大値)0.8331(=4/4)

中央値(0.5)以外は結構違いますよね。EXCは端を除く方式なので、最小値でも0にならず、最大値でも1にならない点が大きな特徴です。

端点でのランクの違い

INCとEXCの最大の違いは、端点(最小値・最大値)でのランクです。

INC: 最小値 → 0、最大値 → 1
EXC: 最小値 → 1/(n+1)、最大値 → n/(n+1)

INCは「データ全体の0%〜100%」のレンジで返しますが、EXCは「0%と100%は理論上ありえない」という前提なので、両端のランクが内側に寄ります。

「順位を直感的に表したい」ならINC関数、「統計的に端を除く方式に従いたい」ならEXC関数、と覚えておけばOKです。仕事の現場ではINCの方が直感的で使い勝手がいいですよ。

PERCENTILE.EXCとの関係

PERCENTILE.EXC関数とPERCENTRANK.EXC関数は、ちょうど逆の関係にあります。

関数入力出力
PERCENTILE.EXCパーセンタイル(k)データの値
PERCENTRANK.EXCデータの値(x)パーセンタイル

たとえばPERCENTILE.EXC(範囲, 0.5)が80を返すなら、PERCENTRANK.EXC(範囲, 80)は0.5を返す、という対応関係になります。

データ分析の現場では、「80パーセンタイルの値はいくつか?」を知りたいときはPERCENTILE.EXCを、「この値は何パーセンタイルか?」を知りたいときはPERCENTRANK.EXCを使う、と使い分けます。

よくあるエラーと対処法

#N/Aエラー:xがデータ範囲外

PERCENTRANK.EXC関数で一番よく見るエラーが#N/Aエラーです。原因はxの値がarrayの最小値より小さいか、最大値より大きい場合です。

データ: A2:A6 = {60, 70, 80, 90, 100}
=PERCENTRANK.EXC(A2:A6, 50)   → #N/Aエラー(最小値60より小さい)
=PERCENTRANK.EXC(A2:A6, 110)  → #N/Aエラー(最大値100より大きい)
=PERCENTRANK.EXC(A2:A6, 75)   → OK(範囲内なので補間で計算)

PERCENTRANK.EXC関数は、データ範囲の中だけで補間する関数です。範囲外の値には対応していないので、xを指定するときはmin・max範囲内に収まっているか確認しましょう。

#NUM!エラー:arrayが空またはデータ不足

arrayが空の場合や、データが少なすぎると#NUM!エラーになります。

=PERCENTRANK.EXC(A2:A2, 80)   → #NUM!エラー(データが1件のみ)
=PERCENTRANK.EXC(A2:A6, 75, 0) → #NUM!エラー(significance < 1)

データが2件以上あるか、significance引数が省略時または1以上の整数になっているかを確認してみてください。

#VALUE!エラー:xが数値でない

引数xに数値以外の値が入っていると#VALUE!エラーになります。

たとえばxに「75点」と入力したセルを参照したつもりが、実は文字列として保存されていた、というケースがありがちです。xには必ず75のような純粋な数値を指定してください。

エラーを事前に防ぎたい場合はIFERROR関数で囲む方法もあります。

=IFERROR(PERCENTRANK.EXC(A2:A11, B1), "値がデータ範囲外、または無効です")

この書き方なら、エラー発生時にメッセージを表示できるので、データ入力者にも親切ですね。

まとめ

PERCENTRANK.EXC関数は「端点を除く方式」で値の百分位ランクを求める関数です。

ポイントを整理しておきましょう。

  • 構文は =PERCENTRANK.EXC(array, x, [significance]) で、最小値でも0より大きいランクが返る
  • EXCは「Exclusive」の略で、最小値→1/(n+1)、最大値→n/(n+1) のランクになる
  • 計算式は (値より小さい個数 + 1) ÷ (n + 1) で、INCとは結果が異なることが多い
  • significance引数を省略すると3桁、指定すれば桁数を制御できる
  • 範囲外の値を指定すると#N/Aエラーになるので注意
  • 迷ったときはPERCENTRANK.INC関数を使う方が直感的

品質管理データや統計分析で「端を除く方式」が必要な場面では、PERCENTRANK.EXC関数がしっかり活躍してくれます。INC関数との違いを理解した上で、用途に合わせて使い分けてくださいね。

タイトルとURLをコピーしました