「3種類のトッピングから2つ選んで並べたい。同じものを重ねてもOKなら何通りだろう?」
パスワードの桁やダイヤルロックの番号など、同じものを繰り返し使える並び順を数えたい場面は意外と多いですよね。普通の順列計算だと「同じものは1回だけ」が前提なので、うまく計算できません。
スプレッドシートのPERMUTATIONA関数を使えば、重複ありの順列を一発で求められます。
この記事では基本の書き方から実務で使える活用例まで紹介します。PERMUT関数との違いもあわせて解説しますね。
スプレッドシートのPERMUTATIONA関数とは?
PERMUTATIONA関数(読み方: パーミュテーションエー関数)は、n個の中からr個を重複を許して選び、並べる順列の数を返す関数です。
名前は英語の「permutation(順列)」がベースで、末尾の「A」は重複ありを意味する識別子です。
数学では「重複順列」と呼ばれる計算ですね。計算式は n^r(nのr乗) です。
たとえば =PERMUTATIONA(3, 2) と書くと「3種類から2つを重複ありで選んで並べる順列」を計算します。結果は「9」です。3の2乗ですね。
ポイントは、同じ要素を何回でも選べるところです。
「AさんAさん」のように同じものが重なるパターンも1通りとして数えます。
PERMUTATIONA関数にできることをまとめると、次のとおりです。
- 重複を許した順列(重複順列)の数を計算する
- パスワードやPINコードのパターン数を調べる
- ダイヤルロックやカラーコードの組み合わせ数を求める
- サイコロを複数回振ったときの出目パターンを数える
NOTE
PERMUTATIONA関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、互換性も問題ありませんよ。
PERMUTATIONA関数の書き方(構文と引数)
基本構文
=PERMUTATIONA(n, r)
カッコの中に「n(選べる種類の数)」と「r(選ぶ個数)」の2つを入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| n | 必須 | 選べる要素の総数。0以上の整数を指定する |
| r | 必須 | 選択する個数。0以上の整数を指定する |
10種類の数字から4つ選んで並べる(重複あり)なら、nが10、rが4です。
PERMUT関数と違い、rがnより大きくてもエラーになりません。同じ要素を繰り返し使えるので、nが3でrが5でも計算できますよ。
小数を指定した場合は小数点以下が切り捨てられます。
PERMUTATIONA関数の基本的な使い方
もっともシンプルな使い方
数値を直接指定するパターンです。
=PERMUTATIONA(3, 2)
結果は「9」です。3種類から2つを重複ありで並べると9通りですね。3^2 = 9 です。
=PERMUTATIONA(10, 4)
結果は「10000」です。10種類から4つを重複ありで並べると10,000通りになります。
=PERMUTATIONA(2, 3)
結果は「8」です。2種類から3つを選んで並べる場合ですね。2^3 = 8 です。nよりrが大きくても計算できるのがPERMUTATIONA関数の特徴です。
セル参照を使う
A1に総数「5」、B1に選ぶ個数「3」が入っているとします。
=PERMUTATIONA(A1, B1)
結果は「125」です。5種類から3つを重複ありで並べると125通りあります。
セル参照を使えば値を変えるだけで結果が自動更新されますよ。
特殊なケース
選ぶ個数が0のとき、結果は「1」です。何も選ばないパターンは1通りという意味ですね。
=PERMUTATIONA(10, 0)
選ぶ個数が1のとき、結果は総数と同じになります。
=PERMUTATIONA(10, 1)
結果は「10」です。10種類から1つ選ぶ方法は10通りですね。重複ありでも1つしか選ばないなら結果は変わりません。
総数が1のとき、何個選んでも結果は「1」です。
=PERMUTATIONA(1, 5)
結果は「1」です。1種類しかないので、何個並べても全部同じになりますよね。1^5 = 1 です。
PERMUTATIONA関数の実践的な使い方・応用例
4桁の暗証番号のパターン数を調べる
0〜9の10種類の数字から4桁の暗証番号を作るケースです。同じ数字を何回でも使えます。
=PERMUTATIONA(10, 4)
結果は「10000」です。4桁の暗証番号には10,000通りのパターンがあります。
ちなみに重複なしの場合はPERMUT関数で計算します。
=PERMUT(10, 4)
結果は「5040」です。重複を許すかどうかで約2倍の差が出ますね。
TIP
桁数を増やすとパターン数は急激に増えます。6桁なら
=PERMUTATIONA(10, 6)で1,000,000通り。セキュリティの強さを実感できますよ。
サイコロの出目パターンを数える
6面のサイコロを3回振ったとき、出目の並びは何通りあるか調べてみましょう。
=PERMUTATIONA(6, 3)
結果は「216」です。6^3 = 216通りですね。
回数を変えてパターン数の変化を見てみましょう。
| 回数 | 数式 | パターン数 |
|---|---|---|
| 1回 | =PERMUTATIONA(6, 1) | 6 |
| 2回 | =PERMUTATIONA(6, 2) | 36 |
| 3回 | =PERMUTATIONA(6, 3) | 216 |
| 4回 | =PERMUTATIONA(6, 4) | 1,296 |
回数が1つ増えるたびに6倍になっていくのが分かりますね。
3色の旗の塗り分けパターンを求める
赤・青・黄の3色から2か所の旗を塗り分けるケースです。同じ色を2回使ってもOKとします。
=PERMUTATIONA(3, 2)
結果は「9」です。赤赤・赤青・赤黄・青赤・青青・青黄・黄赤・黄青・黄黄の9通りですね。
重複なしならPERMUT関数で =PERMUT(3, 2) とすると「6」です。同色の組み合わせ3通り分の差が出ます。
アンケートの回答パターン数を計算する
5段階評価(1〜5)のアンケートが3問ある場合を考えてみましょう。回答の組み合わせは何通りあるでしょうか。
=PERMUTATIONA(5, 3)
結果は「125」です。各問で5択、3問あるので5^3 = 125通りのパターンがあります。
回答パターン数が分かると、分析時にデータのばらつき具合を判断する目安になりますよ。
POWER関数で同じ計算をする
PERMUTATIONA関数の計算式は n^r なので、POWER関数でも同じ結果を得られます。
=POWER(10, 4)
結果は「10000」です。=PERMUTATIONA(10, 4) と同じですね。
ただし、PERMUTATIONA関数を使ったほうが「重複順列の計算をしている」という意図が伝わりやすくなります。数式の読みやすさを考えると、用途に合った関数を選ぶのがおすすめです。
よくあるエラーと対処法
PERMUTATIONA関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | n または r に負の数を指定した | 0以上の整数を指定する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カッコ忘れ・カンマ漏れ等) | 数式の入力内容を見直す |
負の数を指定したとき
nまたはrに負の値を入れると#NUM!エラーになります。
=PERMUTATIONA(-3, 2)
この数式は#NUM!エラーを返します。0以上の整数を指定してくださいね。
引数に小数を指定したとき
小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。
=PERMUTATIONA(5.8, 2.3)
この数式は =PERMUTATIONA(5, 2) と同じ結果で「25」を返します。意図しない切り捨てには注意しましょう。
rがnより大きいときはエラーにならない
PERMUT関数と違い、rがnより大きくてもエラーになりません。
=PERMUTATIONA(3, 5)
結果は「243」です。3^5 = 243通りですね。重複を許すので、要素数より多い個数を選んでも問題ありません。
PERMUT関数との違い・使い分け
PERMUTATIONA関数ともっとも混同しやすいのがPERMUT関数です。違いを表で整理しましょう。
| 項目 | PERMUT | PERMUTATIONA |
|---|---|---|
| 重複 | なし(同じ要素は1回だけ) | あり(同じ要素を何回でも使える) |
| 計算式 | n! / (n-r)! | n^r |
| n=5, r=3の結果 | 60 | 125 |
| rがnより大きい場合 | #NUM!エラー | 計算できる |
5種類から3つ選んで並べるケースで比べてみましょう。
=PERMUT(5, 3)
結果は「60」です。重複なしの順列ですね。
=PERMUTATIONA(5, 3)
結果は「125」です。重複ありの順列になります。
使い分けのポイントは「同じものを繰り返し使えるかどうか」です。
- リレーの走順を決める → PERMUT関数(同じ人が2回走れない)
- 暗証番号のパターン → PERMUTATIONA関数(同じ数字を何度でも使える)
関連する関数も確認しよう
順列・組み合わせに関連する関数の全体像を表にまとめます。
| 関数 | 動作 | 順番の区別 | 重複 |
|---|---|---|---|
| PERMUT | 順列の数を返す | 区別する | なし |
| PERMUTATIONA | 重複順列の数を返す | 区別する | あり |
| COMBIN | 組み合わせの数を返す | 区別しない | なし |
| COMBINA | 重複組み合わせの数を返す | 区別しない | あり |
| FACT | 階乗(n!)を返す | – | – |
| POWER | べき乗(n^r)を返す | – | – |
PERMUTATIONA関数の計算結果はPOWER関数と同じですが、「順列の計算をしている」と伝えたいときはPERMUTATIONA関数を使うと意図が明確になりますよ。
まとめ
PERMUTATIONA関数は、n個の中からr個を重複を許して選び並べる「重複順列」の数を求める関数です。
ポイントを整理します。
- 構文は
=PERMUTATIONA(n, r)の2引数。計算結果は n^r - 同じ要素を何回でも選べるのが特徴
- 暗証番号やダイヤルロックなど、繰り返し使える並びのパターン数を調べるときに便利
- PERMUT関数との違いは「重複を許すかどうか」
- rがnより大きくてもエラーにならない(PERMUT関数は#NUM!エラーになる)
- POWER関数で同じ計算ができるが、意図を明確にするならPERMUTATIONA関数がおすすめ
まずは =PERMUTATIONA(10, 4) で「10種類から4つ選ぶ重複順列 = 10,000通り」から試してみてください。
