ExcelのPERCENTILE.EXC関数とは?百分位数の「除く」型を求める関数
「品質データの上位5%ラインを統計的にきっちり出したい」
「成績データのパーセンタイルを、端を除いた方式で計算したい」
こんな場面でどちらの関数を使うか迷ったことはありませんか。
この記事ではPERCENTILE.EXC関数の使い方を、INC関数との数値比較を交えて解説します。kの有効範囲やよくあるエラーの対処法までしっかり押さえていきましょう。
読み方と語源(EXC=Exclusive=0%と100%を除く)
PERCENTILE.EXC関数の読み方は「パーセンタイル・エクスク」または「パーセンタイル・エクスクルーシブ」です。EXCは「Exclusive(排他的)」の略で、0%と100%の端点を含まないという意味があります。
パーセンタイル(百分位数)とは、データを小さい順に並べたときに「下から何%の位置にある値か」を示す統計指標です。たとえば中央値は50パーセンタイル、第1四分位数は25パーセンタイルにあたります。
PERCENTILE.EXC関数は、この百分位数を「端点を除外する」補間方式で計算する関数です。対応バージョンはExcel 2010以降で、Microsoft 365でも問題なく使えます。
「含む(INC)」と「除く(EXC)」の違いを先に把握する
PERCENTILE関数には「.INC」と「.EXC」の2種類があります。違いをざっくりまとめると次のとおりです。
| 関数 | 意味 | kの有効範囲 |
|---|---|---|
| PERCENTILE.INC | Inclusive(含む) | 0以上1以下 |
| PERCENTILE.EXC | Exclusive(除く) | 0より大きく1より小さい |
INCはk=0で最小値、k=1で最大値を返してくれますが、EXCはこの両端を受け付けません。さらに同じkを指定しても、補間の計算式が違うため結果が変わってきます。
「結局どっちを使えばいいの?」と思いますよね。基本的にはINC関数で十分ですが、統計の教科書や品質管理の現場で「端を除く方式」が指定されている場合はEXC関数の出番です。詳しい比較はPERCENTILE.INC関数の記事も合わせて読んでみてください。
PERCENTILE.EXC関数の書き方(構文と引数)
基本構文
まずは基本の書き方を確認しましょう。引数は2つで、どちらも必須です。
=PERCENTILE.EXC(array, k)
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| array | 必須 | パーセンタイルを求めたいデータ範囲 |
| k | 必須 | 0より大きく1より小さい数値(百分位を小数で指定) |
arrayにはセル範囲(A2:A11など)を指定し、kには0.25や0.5など求めたい百分位を小数で渡します。
kの有効範囲(0より大きく1より小さい)
PERCENTILE.EXC関数の最大の特徴は、kの有効範囲が「0 < k < 1」である点です。0と1ちょうどは指定できません。
=PERCENTILE.EXC(A2:A11, 0) → #NUM!エラー
=PERCENTILE.EXC(A2:A11, 1) → #NUM!エラー
=PERCENTILE.EXC(A2:A11, 0.5) → OK(中央値が返る)
PERCENTILE.INC関数だとk=0で最小値、k=1で最大値を返してくれましたよね。EXC関数はそこが違います。「両端を除いて補間する」という思想なので、端点そのものは数式の対象外なんです。
最小値や最大値が必要なら、MIN関数やMAX関数を使うか、INC関数に切り替えればOKです。
PERCENTILE.EXC関数の基本的な使い方
第25パーセンタイル(第1四分位)を求める
実際にPERCENTILE.EXC関数を使ってみましょう。セルA2:A6に5人分のテスト点数{60, 70, 80, 90, 100}が入っているとします。
第25パーセンタイル(下位25%のしきい値)を求める数式はこうなります。
=PERCENTILE.EXC(A2:A6, 0.25)
結果は65です。「あれ、データに65なんて値ないけど?」と思いますよね。これは線形補間で計算された値なんです。
PERCENTILE.EXC関数の計算式は次のとおりです。
内部ランク = k × (n + 1)
= 0.25 × (5 + 1)
= 1.5
ランク1.5は「1番目の値(60)と2番目の値(70)の中間」を意味します。60 + 0.5 ×(70 – 60)= 65、というわけですね。
第50パーセンタイル(中央値相当)
同じデータで第50パーセンタイル(中央値)も求めてみましょう。
=PERCENTILE.EXC(A2:A6, 0.5)
結果は80です。計算過程はこう。
内部ランク = 0.5 × (5 + 1) = 3.0
→ 3番目の値そのまま = 80
ランクが3.0と整数になったので、補間なしで3番目の値(80)がそのまま返ります。データの個数が奇数のときは、中央値とPERCENTILE.EXC(範囲, 0.5)の結果は一致します。
第75パーセンタイル(第3四分位)
ついでに第75パーセンタイルも見ておきましょう。
=PERCENTILE.EXC(A2:A6, 0.75)
結果は95です。計算は次のとおり。
内部ランク = 0.75 × (5 + 1) = 4.5
→ 4番目の値(90)+ 0.5 ×(100 - 90)= 95
このようにPERCENTILE.EXC関数は、kに応じてデータ間を線形補間しながら値を返してくれます。
PERCENTILE.EXCとPERCENTILE.INCの違い【数値比較】
計算式の違い
PERCENTILE.INC関数とPERCENTILE.EXC関数は、内部ランクの計算式が違います。
| 関数 | 内部ランクの計算式 |
|---|---|
| PERCENTILE.INC | k × (n – 1) + 1 |
| PERCENTILE.EXC | k × (n + 1) |
掛ける数が「n-1」と「n+1」で違うのがポイントです。同じデータ・同じkでも結果が変わってくる原因はここにあります。
同じデータでの結果比較
データ{60, 70, 80, 90, 100}(n=5)でINCとEXCの結果を並べてみましょう。
| k | PERCENTILE.EXC | PERCENTILE.INC |
|---|---|---|
| 0.25 | 65(rank=1.5) | 70(rank=2.0) |
| 0.50 | 80(rank=3.0) | 80(一致) |
| 0.75 | 95(rank=4.5) | 90(rank=4.0) |
| 0 | #NUM!エラー | 60(最小値) |
| 1 | #NUM!エラー | 100(最大値) |
中央値(k=0.5)以外、結果が結構違いますよね。EXCは端点を除外する補間なので、同じkでINCとは異なる値を返します。
kの範囲の違いとk=0・k=1でのエラー
INCとEXCの最大の違いは、kの有効範囲です。
INC: 0 ≤ k ≤ 1 # k=0で最小値、k=1で最大値が返る
EXC: 0 < k < 1 # k=0、k=1は#NUM!エラー
「最小値や最大値もパーセンタイル関数で取りたい」ならINC関数、「端を除く統計手法に従いたい」ならEXC関数、と覚えておけばOKです。
迷ったらINC関数で問題ありません。仕事の現場ではINCの方が直感的で使い勝手がいいですよ。
QUARTILE.EXCとの関係
四分位数(データを4等分した区切り)を求めるQUARTILE.EXC関数は、PERCENTILE.EXC関数の特定のkでの結果と完全に一致します。
| QUARTILE.EXC | PERCENTILE.EXC(同等の式) | 返す値 |
|---|---|---|
| QUARTILE.EXC(範囲, 1) | PERCENTILE.EXC(範囲, 0.25) | 第1四分位数 |
| QUARTILE.EXC(範囲, 2) | PERCENTILE.EXC(範囲, 0.50) | 中央値 |
| QUARTILE.EXC(範囲, 3) | PERCENTILE.EXC(範囲, 0.75) | 第3四分位数 |
つまりQUARTILE.EXC関数はPERCENTILE.EXC関数で完全に代替できます。
QUARTILE.EXC関数は1〜3の整数しか指定できませんが、PERCENTILE.EXC関数は0.05刻みや0.1刻みなど任意のkを指定できる柔軟性があります。
ちなみにQUARTILE.EXCも、kの引数に0や4を指定すると#NUM!エラーになります。これも「端を除く」EXCシリーズ共通の仕様なので覚えておきましょう。
よくあるエラーと対処法
#NUM!エラー:kが範囲外
PERCENTILE.EXC関数で一番よく見るエラーが#NUM!エラーです。原因は主に2つあります。
- kが0以下または1以上: k=0、k=1、k=-0.1、k=1.5などはすべてエラーになります
- arrayが空、またはデータが1件のみ: データが少なすぎると補間できずエラーになります
PERCENTILE.INC関数からEXC関数に書き換えたとき、k=0やk=1のままだとエラーになるパターンが多いです。最小値はMIN関数、最大値はMAX関数で取得しましょう。
=PERCENTILE.EXC(A2:A11, 0) → #NUM!エラー
=MIN(A2:A11) → 最小値が取れる
セル参照でkを指定している場合は、参照先の値が0より大きく1より小さいか確認してみてください。
#VALUE!エラー:kが数値でない
引数kに数値以外の値が入っていると#VALUE!エラーになります。
たとえばkに「25%」と入力したセルを参照したつもりが、実は文字列として保存されていた、というケースがありがちです。kには必ず0.25のような数値を指定してください。
エラーを事前に防ぎたい場合はIFERROR関数で囲む方法もあります。
=IFERROR(PERCENTILE.EXC(A2:A11, B1), "kは0より大きく1より小さい数値を指定")
この書き方なら、エラー発生時にメッセージを表示できるので、データ入力者にも親切ですね。
まとめ
PERCENTILE.EXC関数は「端点を除く補間方式」で百分位数を求める関数です。
ポイントを整理しておきましょう。
- 構文は
=PERCENTILE.EXC(array, k)で、kは0より大きく1より小さい範囲で指定する - EXCは「Exclusive」の略で、k=0とk=1は#NUM!エラーになる
- 内部ランク = k ×(n+1)で計算され、INCとは結果が異なることが多い
- QUARTILE.EXC関数はPERCENTILE.EXC関数で完全に代替できる
- 迷ったときはPERCENTILE.INC関数を使う方が直感的
品質管理データや統計分析で「端を除く方式」が必要な場面では、PERCENTILE.EXC関数がしっかり活躍してくれます。INC関数との違いを理解した上で、用途に合わせて使い分けてくださいね。
