「5種類のドリンクから3杯選ぶとき、同じものを何杯でも頼めるなら何通り?」
飲み物の注文やトッピングの選択など、同じものを繰り返し選べる場面は日常でもよくありますよね。
普通の組み合わせ計算では「同じものは1回まで」が前提です。でも実際は、同じものを複数回選ぶケースのほうが多かったりします。
そんなときに使えるのがスプレッドシートのCOMBINA関数です。重複を許した組み合わせの数を、一発で計算してくれます。
この記事では基本の書き方から実務での活用例、COMBIN関数との違いまで紹介します。
スプレッドシートのCOMBINA関数とは?
COMBINA関数(読み方: コンビナ関数)は、重複を許してn個の中からr個を選ぶ組み合わせの数を返す関数です。
名前は「combination with repetition(重複組み合わせ)」の略称です。
たとえば =COMBINA(5, 3) と書くと「5種類から3つを選ぶ重複組み合わせ」で「35通り」が返ります。
ここでいう「重複を許す」とは、同じ要素を何度でも選べるということです。
りんご・みかん・ぶどうの3種類から2つ選ぶ場合を考えてみましょう。
- 重複なし(COMBIN関数): りんご+みかん、りんご+ぶどう、みかん+ぶどうの3通り
- 重複あり(COMBINA関数): 上の3つに加えて、りんご+りんご、みかん+みかん、ぶどう+ぶどうの合計6通り
COMBINA関数にできることをまとめると、次のとおりです。
- 同じ要素を複数回選べる組み合わせの数を計算する
- 商品やメニューの「重複あり」選択パターンを調べる
- サイコロの出目パターンなど確率の計算に使う
- アンケートの複数回答パターン数を求める
NOTE
COMBINA関数はGoogleスプレッドシートの全バージョンで使えます。Excelにも同名の関数があり、互換性は完全です。
COMBINA関数の書き方(構文と引数)
基本構文
=COMBINA(n, r)
カッコの中に「n(種類の数)」と「r(選ぶ個数)」の2つを入れます。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| n | 必須 | 選択肢の種類の数。0以上の整数を指定する |
| r | 必須 | 選ぶ個数。0以上の整数を指定する |
COMBIN関数との大きな違いは、rがnより大きくてもエラーにならないことです。重複が許されるため、3種類から5つ選ぶことも可能です。
小数を指定した場合は、小数点以下が切り捨てられます。
COMBINA関数の計算式
数学的には「重複組み合わせ」と呼ばれる計算をしています。公式は次のとおりです。
nHr = (n + r - 1)! / (r! × (n - 1)!)
これをFACT関数で書くと次のようになります。
=FACT(n + r - 1) / (FACT(r) * FACT(n - 1))
COMBINA関数はこの面倒な計算を1つでやってくれるわけですね。
COMBINA関数の使い方と活用例
もっともシンプルな使い方
数値を直接指定するパターンです。
=COMBINA(5, 2)
結果は「15」です。5種類から2つを重複ありで選ぶ組み合わせは15通りあります。
=COMBINA(3, 3)
結果は「10」です。3種類から3つを重複ありで選ぶ組み合わせですね。
=COMBINA(4, 1)
結果は「4」です。1つだけ選ぶなら、重複ありでも種類の数と同じになります。
セル参照を使う
A1に種類の数「6」、B1に選ぶ個数「2」が入っているとします。
=COMBINA(A1, B1)
結果は「21」です。6種類から2つを重複ありで選ぶ組み合わせは21通りあります。
セル参照を使えば、値を変えるだけで結果が自動更新されますよ。
特殊なケース
選ぶ個数が0のとき、結果は「1」です。
=COMBINA(10, 0)
何も選ばないパターンは1通りしかないという意味です。
種類の数が1のとき、結果も「1」です。
=COMBINA(1, 5)
1種類しかなければ、何個選んでも組み合わせは1通りですね。
rがnより大きい場合でも正常に計算できます。
=COMBINA(3, 5)
結果は「21」です。3種類から重複ありで5つ選ぶ組み合わせは21通りあります。COMBIN関数なら =COMBIN(3, 5) は #NUM! エラーになりますが、COMBINA関数ではエラーになりません。
サイコロの出目パターンを数える
サイコロを2個振ったとき、出目の組み合わせが何通りあるか調べてみましょう。「1と3」と「3と1」を同じ組み合わせとして数えます。
=COMBINA(6, 2)
結果は「21」です。サイコロ2個の出目の組み合わせは21通りあります。
サイコロ3個なら次のように計算できます。
=COMBINA(6, 3)
結果は「56」です。3個になると一気に増えますね。
TIP
「1と3」と「3と1」を別の出目として数えたい場合は、順列を考える必要があります。その場合は6^2 = 36通りです。
商品のセット選択パターンを数える
お弁当屋さんで10種類のおかずから3品選べるとします。同じおかずを複数選んでもOKのルールです。
=COMBINA(10, 3)
結果は「220」です。220パターンの組み合わせがあります。
重複を許さない場合と比べてみましょう。
=COMBIN(10, 3)
こちらは「120」です。重複ありのほうが約1.8倍多くなりますね。
アンケートの回答パターンを数える
5段階評価のアンケートで、3つの質問に回答するパターン数を求めます。各質問で1〜5の同じ評価を選べるので、重複組み合わせです。
=COMBINA(5, 3)
結果は「35」です。回答パターンの分析に使えます。
ドリンクの注文パターンを数える
カフェで8種類のドリンクメニューから2杯注文する場合です。同じドリンクを2杯頼んでもOKとします。
=COMBINA(8, 2)
結果は「36」です。36通りの注文パターンがありますよ。
よくあるエラーと対処法
COMBINA関数で発生しやすいエラーをまとめました。
| エラー | 原因 | 対処法 |
|---|---|---|
| #NUM! | nに負の数を指定した | 0以上の整数を指定する |
| #NUM! | rに負の数を指定した | 0以上の整数を指定する |
| #VALUE! | 引数に文字列が入っている | セル参照先が数値かどうか確認する |
| #ERROR! | 構文ミス(カッコ忘れ・カンマ漏れ等) | 数式の入力内容を見直す |
COMBIN関数との重要な違い
COMBIN関数では r > n のときに #NUM! エラーが出ます。しかしCOMBINA関数では、rがnより大きくてもエラーになりません。
=COMBINA(3, 5)
この数式は正常に「21」を返します。重複を許すので、3種類から5つ選ぶことは可能ですよね。
引数に小数を指定したとき
小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。
=COMBINA(5.8, 2.3)
この数式は =COMBINA(5, 2) と同じ結果で「15」を返します。
COMBIN関数とCOMBINA関数の違い・使い分け
もっとも混同しやすい2つの関数を比較表で整理します。
| 比較項目 | COMBIN関数 | COMBINA関数 |
|---|---|---|
| 正式名称 | 組み合わせ | 重複組み合わせ |
| 重複 | 許さない | 許す |
| r > n の場合 | #NUM! エラー | 正常に計算される |
| 計算式 | n! / (r! × (n-r)!) | (n+r-1)! / (r! × (n-1)!) |
| 5種類から3つ選ぶ | 10通り | 35通り |
使い分けのポイント
判断基準はシンプルです。同じものを複数回選べるかどうかで決まります。
- COMBIN関数を使う場面: チーム分け(同じ人は2回選べない)、くじ引き(引いた番号は戻さない)
- COMBINA関数を使う場面: ドリンク注文(同じメニューを何杯でもOK)、サイコロ(同じ目が出る)
迷ったときは「一度選んだものをもう一度選べるか?」と考えてみてください。選べるならCOMBINA関数、選べないならCOMBIN関数です。
FACT関数との関係
FACT関数は階乗(n!)を返す関数です。COMBINA関数の計算結果もFACT関数で再現できます。
重複組み合わせの公式は「(n+r-1)! / (r! x (n-1)!)」です。
=FACT(5+3-1) / (FACT(3) * FACT(5-1))
結果は「35」です。これは =COMBINA(5, 3) と同じ結果ですね。
COMBINA関数を使えばこの面倒な計算が1つの関数で済みます。
Excelとの互換性
COMBINA関数はExcelでも同じ構文・同じ動作で使えます。Excel 2013以降に対応しているので、ファイルのやり取りでも安心ですよ。
まとめ
COMBINA関数は、重複を許してn個の中からr個を選ぶ組み合わせの数を求める関数です。
ポイントを整理します。
- 構文は
=COMBINA(n, r)の2引数。重複組み合わせの数を返す - COMBIN関数との違いは、同じ要素を複数回選べるかどうか
- r > n でもエラーにならないのが特徴(COMBIN関数は #NUM! エラー)
- サイコロの出目やドリンク注文など、「同じものを選べる」場面で活躍する
- 計算式は (n+r-1)! / (r! x (n-1)!) だが、COMBINA関数なら一発で計算できる
- FACT関数の階乗で同じ計算が可能。ただしCOMBINA関数のほうがシンプル
まずは =COMBINA(6, 2) で「サイコロ2個の出目の組み合わせ = 21通り」から試してみてください。
