「10人を3人・3人・4人の3グループに分けると、何通りあるんだろう?」
プロジェクトメンバーの振り分けや社員旅行の部屋割りで、グループ分けのパターン数が知りたくなる場面ってありますよね。
ExcelのMULTINOMIAL関数を使えば、各グループの人数を指定するだけで分け方の総数を一発で計算できます。FACT関数で階乗を何度も組み合わせる手間が、ぐっと減るんですよ。
この記事では、ExcelのMULTINOMIAL関数の基本的な使い方から、グループ分け・文字の並べ替え・確率計算などの活用例、よくあるエラーと似た関数との使い分けまで紹介します。
ExcelのMULTINOMIAL関数とは?
ExcelのMULTINOMIAL関数(読み方: マルチノミアル関数)は、多項係数(たこうけいすう)を返す関数です。
名前は英語の「multinomial(多項式)」からきています。
多項係数とは、次の計算式で求める値のことです。
各引数の合計の階乗 / 各引数の階乗の積
たとえば =MULTINOMIAL(2, 3) と書くと、「(2+3)! / (2! × 3!) = 120 / 12 = 10」が返ります。
ちょっとむずかしく見えますが、やっていることはシンプルです。「全体を決まった人数ずつのグループに分けるとき、何通りの分け方があるか」を求めているんですね。
MULTINOMIAL関数でできること
MULTINOMIAL関数にできることをまとめると、次のとおりです。
- グループ分けの総パターン数を求める
- 同じ文字を含む文字列の並べ替えパターン数を計算する
- 多項分布(たこうぶんぷ)の確率計算に使う
- FACT関数を使った手計算をまとめて処理する
NOTE
MULTINOMIAL関数はExcel 2007以降の標準関数です。Microsoft 365・Excel 2024・Excel 2021・Excel 2019などほとんどのバージョンで使えますよ。Excel 2003以前は分析ツールアドインの関数だったため、アドインを有効化する必要がありました。
MULTINOMIAL関数の書き方(構文と引数)
基本構文
=MULTINOMIAL(数値1, [数値2], ...)
カッコの中に、各グループの人数(要素数)をカンマ区切りで入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 数値1 | 必須 | 1番目のグループの個数。0以上の整数を指定する |
| 数値2, … | 任意 | 2番目以降のグループの個数。最大255個まで指定可能 |
引数を1つだけ指定した場合は「n! / n! = 1」となり、必ず1が返ります。
ExcelでのMULTINOMIAL関数の基本的な使い方
もっともシンプルな使い方
2つのグループに分けるパターンから見てみましょう。
=MULTINOMIAL(2, 3)
結果は「10」です。5人を2人と3人のグループに分ける方法は10通りあります。
この計算は (2+3)! / (2! × 3!) = 120 / (2 × 6) = 10 ですね。
=MULTINOMIAL(3, 3)
結果は「20」です。6人を3人ずつの2グループに分ける方法ですね。
=MULTINOMIAL(1, 1, 1)
結果は「6」です。3人を1人ずつ3つに分ける方法は6通りあります。これは3人の並べ方(3! = 6)と同じですね。
セル参照を使う
実務では、セル参照を使ったほうが便利です。A1に「3」、B1に「3」、C1に「4」が入っているとしましょう。
=MULTINOMIAL(A1, B1, C1)
結果は「4200」になります。人数を変えるだけで結果が自動更新されるので、複数パターンの比較も楽になりますよ。
特殊なケース
引数を1つだけ指定した場合は、常に「1」が返ります。
=MULTINOMIAL(5)
結果は「1」です。5! / 5! = 1 ですね。
引数に0を含めた場合は、そのグループを無視したのと同じ結果になります。
=MULTINOMIAL(3, 0, 4)
結果は「35」です。これは =MULTINOMIAL(3, 4) と同じ結果ですね。0の階乗(0!)は1と定義されているため、計算に影響しません。
MULTINOMIAL関数の実践的な使い方・応用例
グループ分けの総パターン数を求める
10人のメンバーを3人・3人・4人の3グループに分ける方法は何通りあるか計算してみましょう。
=MULTINOMIAL(3, 3, 4)
結果は「4200」です。なんと4,200通りもの分け方があります。
この計算をFACT関数で書くとこうなります。
=FACT(10) / (FACT(3) * FACT(3) * FACT(4))
結果は同じく「4200」になります。MULTINOMIAL関数のほうが、数式がずっとシンプルですよね。
TIP
2グループへの分け方はCOMBIN関数でも計算できます。3グループ以上に分けるときは、MULTINOMIAL関数のほうが断然便利ですよ。
同じ文字を含む文字列の並べ替えパターン数
「MISSISSIPPI」のように同じ文字を含む文字列の、並べ替えパターン数を求めてみましょう。
MISSISSIPPIは全11文字で、内訳は次のとおりです。
- M: 1個
- I: 4個
- S: 4個
- P: 2個
=MULTINOMIAL(1, 4, 4, 2)
結果は「34650」です。34,650通りの並べ替えパターンがあります。
もし11文字がすべて異なる文字なら、並べ替えは11! = 39,916,800通りになります。同じ文字があると重複するパターンが出るため、ぐっと少なくなるんですね。
社員旅行の部屋割りを計算する
12人の社員を4人部屋が3室に振り分ける方法は何通りあるか、調べてみましょう。
=MULTINOMIAL(4, 4, 4)
結果は「34650」です。
TIP
この計算は「区別のあるグループ」への分け方です。部屋に番号がついている場合の計算ですね。「部屋の区別がない場合」は、この結果をグループ数の階乗で割ります。3室なら 34650 / 3! = 5775通りになりますよ。
サイコロの確率計算(多項分布)
サイコロを6回振って、1が2回・2が1回・3が3回出る確率を求めてみましょう。
まず、この出方のパターン数をMULTINOMIAL関数で計算します。
=MULTINOMIAL(2, 1, 3)
結果は「60」です。6回の試行のうち「どの回に1が出て、どの回に2が出て、どの回に3が出るか」のパターンが60通りあります。
全出方の総数は6の6乗(46,656通り)です。各目の出る確率は1/6なので、次のように計算できます。
=MULTINOMIAL(2, 1, 3) * (1/6)^6
結果は「0.00129…」ですね。約0.13%の確率です。多項分布の計算は、サイコロ以外にもアンケート結果の分析や在庫シミュレーションなどで使えますよ。
よくあるエラーと対処法
MULTINOMIAL関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | 負の数を指定した、または合計値が大きすぎる | 0以上の整数を指定する / 合計を減らす |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #NAME? | 関数名のスペルミス | MULTINOMIALのスペルを見直す |
負の数を指定したとき(#NUM!エラー)
もっとも多いエラーです。グループの人数にマイナスはありえませんよね。
=MULTINOMIAL(-2, 3)
この数式は#NUM!エラーになります。セル参照の場合は、参照先に負の値が入っていないか確認してみてください。
引数に文字列が入っているとき(#VALUE!エラー)
引数に数値以外の文字列が入ると、#VALUE!エラーが返ります。
=MULTINOMIAL("3人", 4)
この数式は#VALUE!エラーになります。セル参照先に「3人」や「3個」のような文字列が含まれていないか確認しましょう。数値のみを指定してくださいね。
引数に小数を指定したとき
小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。
=MULTINOMIAL(2.7, 3.2)
この数式は =MULTINOMIAL(2, 3) と同じ結果で「10」を返します。意図した動作になっているか、結果を確認してみてください。
合計が大きすぎるとき(#NUM!エラー)
引数の合計が大きくなりすぎると、階乗がExcelの数値上限(約1.79×10^308)を超えて#NUM!エラーになります。
=MULTINOMIAL(200, 200, 200)
このような大きな数値を扱う場合は、対数計算を使った近似(GAMMALN関数など)を検討するのがよいですよ。
MULTINOMIAL関数と似た関数との違い・使い分け
4関数の使い分け早見表
多項係数や順列・組み合わせを計算する関数は、Excelに複数あります。まずは早見表で整理しておきましょう。
| 関数 | 動作 | 主な用途 |
|---|---|---|
| MULTINOMIAL | 多項係数を返す | 3グループ以上への分け方・同文字列の並べ替え |
| FACT | 階乗(n!)を返す | 並べ方の総数・確率計算 |
| COMBIN | 組み合わせの数(nCr)を返す | 2グループへの分け方・抽選 |
| PERMUT | 順列の数(nPr)を返す | 順番をつける選び方 |
MULTINOMIAL関数とFACT関数の関係
MULTINOMIAL関数は、内部的にFACT関数の計算をまとめたものです。
数式で書くとこうなります。
MULTINOMIAL(a, b, c) = FACT(a+b+c) / (FACT(a) × FACT(b) × FACT(c))
たとえば =MULTINOMIAL(2, 3, 4) は、次のFACT関数の計算と同じ結果になります。
=FACT(9) / (FACT(2) * FACT(3) * FACT(4))
どちらも結果は「1260」です。MULTINOMIAL関数のほうが数式がシンプルで、引数の数が増えても書きやすいですよね。
MULTINOMIAL関数とCOMBIN関数の関係
MULTINOMIAL関数の引数が2つの場合、COMBIN関数と同じ結果になります。
=MULTINOMIAL(3, 7)
結果は「120」です。
=COMBIN(10, 3)
こちらも結果は「120」になります。
どちらも「10人を3人と7人に分ける方法」を計算しているんですね。2グループへの分け方ならCOMBIN関数、3グループ以上ならMULTINOMIAL関数を使うのがおすすめです。
MULTINOMIAL関数とPERMUT関数の違い
PERMUT関数(順列を求める関数)とMULTINOMIAL関数は、役割が違います。
- PERMUT: 順序を区別した「並べ方」の数(例: 5人から3人を選んで発表順を決める)
- MULTINOMIAL: 順序を区別しない「グループ分け」の数(例: 10人を3グループに分ける)
PERMUT関数は「誰が1番目で、誰が2番目か」を区別します。MULTINOMIAL関数は「グループの中で誰が1番目かは関係ない」という点が違いますね。
TIP
「順番あり→PERMUT」「順番なし2グループ→COMBIN」「順番なし3グループ以上→MULTINOMIAL」の3段階で覚えると、使い分けに迷いません。
まとめ
ExcelのMULTINOMIAL関数は、多項係数を一発で計算できる便利な関数です。グループ分けのパターン数や、同じ文字を含む文字列の並べ替え数、多項分布の確率計算など、使いどころは意外と多くあります。
この記事のポイントをまとめると、次のとおりです。
- 基本構文は
=MULTINOMIAL(数値1, [数値2], ...)で、各グループの人数をカンマ区切りで指定する - 計算式は「各引数の合計の階乗 / 各引数の階乗の積」
- 3グループ以上への分け方や、同じ文字を含む文字列の並べ替え数に使える
- 負の数・文字列でエラーになる。小数は切り捨てられて計算される
- 2グループだけならCOMBIN関数、順番ありならPERMUT関数と使い分ける
FACT関数で何度も階乗を書くよりも、MULTINOMIAL関数1つで済ませるほうが、数式がシンプルで見やすくなりますよ。実務でグループ分けや部屋割りが必要になったら、ぜひ使ってみてください。
スプレッドシートでも同じ関数が使えるので、プラットフォームを問わず活用できます。Googleスプレッドシート版の使い方はスプレッドシートのMULTINOMIAL関数の使い方で詳しく紹介しています。
関連する数学関数の使い方は、以下の記事もあわせてチェックしてみてくださいね。
