「5人のチームから3人を選んで発表順を決めたい」「4桁の暗証番号は何通り作れるんだろう?」――こんな場面で活躍するのが、ExcelのPERMUT関数です。順列の計算を手作業でやると、階乗の割り算を電卓で何度も叩くことになって、正直めんどうですよね。
PERMUT関数を使えば、セルに数式を1つ入れるだけで順列の数がパッと出ます。この記事では、PERMUT関数の基本的な使い方からエラー対処、COMBIN関数やPERMUTATIONA関数との違いまで、実例付きでまとめて解説しますね。
ExcelのPERMUT関数とは?
PERMUT関数は、標本の中から指定した個数を選んで並べるときの順列(並べ方)の総数を求める関数です。読み方は「パーミュテーション」で、英語の “permutation”(順列)が語源になっています。
順列とは、選ぶ順番が結果に影響する選び方のことです。たとえば、A・B・Cの3人から2人を選んで並べる場合、「A→B」と「B→A」は別の順列として数えます。同じメンバーでも順番が違えば別パターンとしてカウントするのが順列の特徴ですね。
PERMUT関数が返す値は、次の数学公式と同じ結果です。
nPr = n! / (n - r)!
ここで n が標本数(全体の数)、r が抜き取り数(選ぶ個数)です。階乗の計算をExcelが自動でやってくれるので、n が大きい数でもサクッと求められます。
対応バージョンはExcel 2007以降で、Microsoft 365やExcel 2021でもそのまま使えます。Googleスプレッドシートにも同名のPERMUT関数があるので、どちらの環境でも同じ書き方で大丈夫ですよ。
ExcelのPERMUT関数の書き方(構文と引数)
基本構文
=PERMUT(標本数, 抜き取り数)
引数は2つで、どちらも必須です。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 標本数 | 必須 | 母集団の総数。0以上の整数で指定する |
| 抜き取り数 | 必須 | 選択する個数。0以上かつ標本数以下の整数で指定する |
引数に小数を指定した場合は、小数点以下が切り捨てられて計算されます。たとえば =PERMUT(5.8, 3.2) は =PERMUT(5, 3) と同じ結果(60)になりますよ。意図せず小数を渡してしまっても自動で整数化されるので、エラーにはならない点は覚えておきましょう。
PERMUT関数の基本的な使い方
実際にPERMUT関数を使ってみましょう。3つの代表的なパターンを紹介します。
数値を直接入力する方法
5人から3人を選んで一列に並べるパターン数を求めてみます。
=PERMUT(5, 3)
結果は 60 です。5人から3人を選ぶ順列なので、5 × 4 × 3 = 60通りという計算ですね。手計算で 5! / 2! を求めるよりずっと早く出せます。
セル参照を使う方法
セルA1に標本数「10」、セルA2に抜き取り数「4」が入っている場合は、次のように書きます。
=PERMUT(A1, A2)
結果は 5040 です。10人から4人を選んで並べる順列ですね。セル参照を使えば、A1やA2の値を変更するだけで結果が自動更新されます。シミュレーション用のシートを作るときに重宝しますよ。
全員を並べる場合(全順列)
標本数と抜き取り数を同じ値にすると、全員を並べる場合の総数(全順列)を求められます。
=PERMUT(4, 4)
結果は 24 です。これは4の階乗(4! = 4 × 3 × 2 × 1 = 24)と同じ値で、FACT関数でも同じ結果が得られます。座席の配置パターンや、トーナメント表の並び方を調べるときに使えますよ。
PERMUT関数の実践的な使い方・応用例
プレゼンの発表順を計算する
10人のメンバーから3人を選んで発表順を決める場合、何通りのパターンがあるか調べてみましょう。
=PERMUT(10, 3)
結果は 720 通りです。10 × 9 × 8 = 720 という計算ですね。「誰を選ぶか」だけでなく「どの順番で発表するか」も考慮するので、組み合わせよりずっと多い数になります。
暗証番号のパターン数を求める(同じ数字を使わない場合)
「0〜9の数字から重複なしで4桁の暗証番号を作る」場合のパターン数も、PERMUT関数で計算できます。
=PERMUT(10, 4)
結果は 5040 通りです。なお、同じ数字の繰り返しを許す通常の4桁暗証番号は10⁴ = 10000通りなので、後述するPERMUTATIONA関数を使います。
FACT関数と組み合わせて検算する
PERMUT関数の結果は、FACT関数を使って検算できます。順列の公式 nPr = n! / (n-r)! をそのまま数式に書き換えるだけです。
=FACT(10) / FACT(10-3)
この結果も 720 になり、=PERMUT(10, 3) と完全に一致します。授業や研修で順列の計算を解説するときは、両方の式を並べて見せると公式の意味がスッと伝わりますよ。
複数パターンの比較表を作る
チーム人数ごとに順列の数がどう変わるか、一覧表で比較するのも実務で役立ちます。A列にチーム人数(5〜10)、B列に選ぶ人数「3」を入れて、C列に =PERMUT(A2, B2) と入力すれば、一覧表が簡単に作れます。
| チーム人数 | 選ぶ人数 | 順列の数 |
|---|---|---|
| 5 | 3 | 60 |
| 6 | 3 | 120 |
| 7 | 3 | 210 |
| 8 | 3 | 336 |
| 9 | 3 | 504 |
| 10 | 3 | 720 |
人数が1人増えるごとに順列の数が急激に増えるのがわかりますね。「組み合わせ爆発」と呼ばれる現象を体感するのに、ちょうどいい例です。
よくあるエラーと対処法
#NUM! エラー
PERMUT関数で最も多いエラーです。引数の値に問題があるとき発生します。
- 標本数が負の値:
=PERMUT(-5, 3)のように負の数を指定するとエラーになります - 抜き取り数が負の値:
=PERMUT(5, -1)もエラーです - 抜き取り数が標本数を超えている:
=PERMUT(3, 5)のように、選ぶ数が全体より多いとエラーになります
3人しかいないのに5人を選ぶことはできませんよね。抜き取り数が標本数以下になっているか、まずチェックしてみてください。ユーザー入力で抜き取り数を受け取るシートでは、=IF(B1>A1, "抜き取り数が多すぎます", PERMUT(A1, B1)) のように IF関数で先回りチェックしておくと安心です。
#VALUE! エラー
引数に文字列や、数値に変換できない値を指定した場合に発生します。
=PERMUT("五", 3) → #VALUE! エラー
=PERMUT(A1, B1) → A1やB1が文字列だとエラー
セル参照を使うときは、参照先に半角数字が入っているか確認しておきましょう。空白セルを参照した場合は0として扱われるので、=PERMUT(A1, 0) 相当となり結果は1(何も並べない場合の1通り)が返ります。
PERMUT関数と似た関数との違い・使い分け
PERMUT関数とPERMUTATIONA関数の違い
PERMUTATIONA関数は重複を許す順列(重複順列)を求めます。PERMUTは一度選んだ要素を再度選べませんが、PERMUTATIONAは同じ要素を何度でも選べます。
| 関数 | 種類 | 例(3個から2個選ぶ) | 結果 |
|---|---|---|---|
| PERMUT | 重複なし順列 | =PERMUT(3, 2) | 6 |
| PERMUTATIONA | 重複あり順列 | =PERMUTATIONA(3, 2) | 9 |
暗証番号のように同じ数字を繰り返し使える場合はPERMUTATIONA、メンバー選出のように同じ人を2回選べない場合はPERMUTを使い分けましょう。
PERMUT関数とCOMBIN関数の違い
COMBIN関数は組み合わせ(順序を考慮しない選び方)を求めます。順列と組み合わせの一番の違いは、並び順が意味を持つかどうかです。
| 関数 | 種類 | 例(5個から3個選ぶ) | 結果 |
|---|---|---|---|
| PERMUT | 順列(順序あり) | =PERMUT(5, 3) | 60 |
| COMBIN | 組み合わせ(順序なし) | =COMBIN(5, 3) | 10 |
発表順や座席配置のように順番が重要な場面ではPERMUT、委員会のメンバー選出のように「誰を選ぶか」だけが重要な場面ではCOMBIN関数を使いましょう。実は PERMUT(n, r) = COMBIN(n, r) × FACT(r) という関係があり、上の例なら 10 × 6 = 60 と計算が合います。
重複を許す組み合わせを求めるときは、COMBINA関数が使えますよ。
4つの関数の使い分け早見表
順列・組み合わせ系の関数は4つあって混乱しやすいので、早見表でまとめておきます。
| 順序 | 重複 | 使う関数 | 例 |
|---|---|---|---|
| あり | なし | PERMUT | メンバー選出+発表順 |
| あり | あり | PERMUTATIONA | パスワード・暗証番号 |
| なし | なし | COMBIN | 委員会のメンバー選出 |
| なし | あり | COMBINA | アイス3スクープを2種類から選ぶ |
「順序が大事か」「同じものを何度も使えるか」の2軸で考えると、迷わず正しい関数を選べますよ。
まとめ
ExcelのPERMUT関数は、標本から指定した個数を選んで並べるときの順列の数を求める関数です。この記事のポイントをおさらいしましょう。
- 構文:
=PERMUT(標本数, 抜き取り数)で順列を計算できる - 数学の公式: nPr = n! / (n-r)! と同じ結果が返る
- エラー対策: 標本数 ≧ 0、抜き取り数 ≧ 0、抜き取り数 ≦ 標本数 を守る
- 似た関数との使い分け: 重複ありならPERMUTATIONA、順序不要ならCOMBIN、順序不要+重複ありならCOMBINA
順列の計算は手作業だとミスしやすいので、PERMUT関数にまかせてしまうのがおすすめです。発表順の検討やパターン数の試算など、日常のちょっとした計算でぜひ活用してみてくださいね。
