「トッピングは同じものを重ねてもOK」というお店で、注文パターンが何通りあるか気になったことはありませんか。手で書き出すと、同じものを2つ選ぶパターンをつい数え忘れがち。
Googleスプレッドシートなら、=COMBINA(種類の数, 選ぶ数) の1関数で正確な数が出ます。3種類から2つ選ぶなら、=COMBINA(3, 2) が「6」を返す仕組み。
COMBIN関数の3通りより多いのは、同じものを2回選ぶパターンも数えるからです。この記事では、COMBINとの違いや4関数の使い分け、エラーの注意点まで順番に見ていきます。
スプレッドシートのCOMBINA関数とは?結論と構文
COMBINA関数(読み方: コンビナ)は、同じものを何回選んでもよいときの組み合わせの数を返す関数です。数学では「重複組み合わせ」と呼ばれる数え方で、選んだものの並び順は区別しません。
=COMBINA(3,2) → 6 の一発例
まずは結果を見てみましょう。
=COMBINA(3, 2)
結果は「6」。バニラ・チョコ・いちごの3種類から、アイスを2つ選ぶパターン数です。
同じ条件で =COMBIN(3, 2) は「3」を返します。差の3通りは「バニラ×2」のような同じ味の重ね選び。COMBINAだけが、これも1通りとして数えます。
構文と引数
=COMBINA(n, k)
| 引数 | 意味 | 指定する値 |
|---|---|---|
| n | 選択肢の種類の数 | 0以上の数値 |
| k | 選ぶ個数 | 0以上の数値 |
引数はどちらも必須です。小数を入れた場合は、計算前に小数点以下が切り捨てられます。
ひとつ注意したいのが、n と k は入れ替えられないという点。公式ヘルプにある「順序は結果に影響しない」は、選ぶ要素の並び順の話です。引数の順番を変えると結果も変わるため、後の章で具体例を確かめましょう。
Excelを使っている方はこちら
ExcelにもCOMBINA関数があり、Excel 2013で追加されました。Excelでの使い方はExcelのCOMBINA関数の解説にまとめています。
重複組み合わせの数え方と計算式
3種のアイスから2つ選ぶ6通りを全部書き出す
=COMBINA(3, 2) の6通りを、実際に全部並べてみます。右端の列は、次の節で使う「仕切り」での表し方。
| No | 選んだ2つ | 同じ味? | COMBINで数える? | 仕切りで表すと |
|---|---|---|---|---|
| 1 | バニラ+バニラ | はい | 数えない | ○○|| |
| 2 | バニラ+チョコ | いいえ | 数える | ○|○| |
| 3 | バニラ+いちご | いいえ | 数える | ○||○ |
| 4 | チョコ+チョコ | はい | 数えない | |○○| |
| 5 | チョコ+いちご | いいえ | 数える | |○|○ |
| 6 | いちご+いちご | はい | 数えない | ||○○ |
COMBINが数えるのは、No.2・3・5の3通りだけ。COMBINAは同じ味の3通りも足して、6通りになります。
なお「バニラ+チョコ」と「チョコ+バニラ」は、同じ1通りとして扱います。並び順を区別しないのが、COMBINAの数え方です。
計算式 H(n,k)=C(n+k-1,k) の考え方
上の表の右端は、選んだアイス(○)と味の境目の仕切り(|)を一列に並べたものです。仕切りの左がバニラ、真ん中がチョコ、右がいちごの個数を表すと考えてください。
3種類を分けるには、仕切りが2本あれば足ります。つまり○2個と|2本で、合わせて4か所の並びを作ることになります。4か所のうち○を置く2か所を選べば、組み合わせが1つ決まる仕組み。
一般化すると、n 種類から k 個選ぶ数は、n+k-1 か所から k か所を選ぶ数と同じです。式で書くと H(n,k)=C(n+k-1,k) となり、COMBIN関数で検算できます。
=COMBIN(3+2-1, 2)
結果は =COMBINA(3, 2) と同じ「6」。階乗を使う形に直すと次の式になり、FACT関数でも再現できます。
=FACT(3+2-1) / (FACT(2) * FACT(3-1))
FACT(4)÷(FACT(2)×FACT(2)) で、24÷4=6。ただし公式ヘルプによると、大きな引数を扱えるのはCOMBINAのほうです。FACTの式は検算用と割り切り、普段はCOMBINAを使いましょう。
COMBIN・COMBINA・PERMUT・PERMUTATIONAの使い分け表
4象限表(3種から2つ選ぶ場合)
組み合わせや順列を数える関数は、スプレッドシートに4つあります。違いは「同じものを2回選べるか」と「並び順を区別するか」の2点だけ。
| 重複なし(1回まで) | 重複あり(何回でも) | |
|---|---|---|
| 順序を区別しない | COMBIN(3,2)=3 | COMBINA(3,2)=6 |
| 順序を区別する | PERMUT(3,2)=6 | PERMUTATIONA(3,2)=9 |
COMBINAとPERMUTはどちらも6ですが、数えている中身は別物です。COMBINAは「バニラ×2」を含み、「バニラ→チョコ」と「チョコ→バニラ」を1通りとみなします。PERMUTは同じ味を選べない代わりに、この2つを別々に数える関数。
順序ありの2関数は、PERMUT関数とPERMUTATIONA関数の記事で詳しく解説しています。
迷ったときの判断フロー
使う関数を決めるには、次の2つの質問に答えるだけでOK。
- 一度選んだものを、もう一度選べる? → 選べるなら名前に「A」が付く関数(COMBINA / PERMUTATIONA)
- 選ぶ順番や並びを区別する? → 区別するならPERMUT系、しないならCOMBIN系
たとえば「トッピングを3つ選ぶ(同じものOK)」は、質問1が「はい」で質問2が「いいえ」。答えはCOMBINAです。
一方「3つの設問にそれぞれ5段階で答える」場合は、設問ごとに回答が区別されます。こちらは順序ありの =PERMUTATIONA(5, 3) で125通り。=COMBINA(5, 3) の35通りとは一致しません。
COMBINA関数の使い方と活用例
トッピング選び
10種類のトッピングから3つ選べて、同じものを重ねてもOKなお店を考えます。
=COMBINA(10, 3)
結果は「220」。重複なしの =COMBIN(10, 3) は「120」なので、重ねられるだけで100通り増える計算です。
ガチャ・サイコロの出目
サイコロ2個を同時に振ったときの出目の組み合わせは、=COMBINA(6, 2) で21通り。「1と3」と「3と1」を同じものとして数えた結果です。
2個を区別して数えたいなら、重複あり順列の =PERMUTATIONA(6, 2) を使いましょう。こちらは6×6で36通りです。
ガチャも考え方は同じ。12種類のキャラが出るガチャを2回引いたとき、手に入る組み合わせは =COMBINA(12, 2) で78通りです。引いた順番を気にしないなら、COMBINAで十分でしょう。
アンケート複数回答のパターン数
5つの案に、1人3票を自由に投じる投票を考えます。同じ案に2票や3票入れてもよいルール。
=COMBINA(5, 3)
結果は「35」。これは、どの案に何票入ったかという「票の配り方」の数です。
気をつけたいのが、3つの設問に5段階で答えるアンケートとの違い。設問1・2・3はそれぞれ別物なので、回答パターンは5×5×5の125通りになります。この場合はCOMBINAではなく、=PERMUTATIONA(5, 3) を使ってください。
セル参照で使う(コピペ用の表)
ここまでの例を1枚の表にまとめました。A〜C列に値を、D〜F列に数式を入れて下へコピーすれば完成。
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | 場面 | 種類 n | 選ぶ数 k | COMBINA | COMBIN | 差 |
| 2 | アイス | 3 | 2 | 6 | 3 | 3 |
| 3 | トッピング | 10 | 3 | 220 | 120 | 100 |
| 4 | サイコロ2個 | 6 | 2 | 21 | 15 | 6 |
| 5 | ガチャ2回 | 12 | 2 | 78 | 66 | 12 |
| 6 | 投票3票 | 5 | 3 | 35 | 10 | 25 |
D2〜F2に入れる数式は次のとおりです。
D2: =COMBINA(B2, C2)
E2: =COMBIN(B2, C2)
F2: =D2-E2
B列やC列の数字を変えると、結果も自動で更新されます。F列を見ると、種類や選ぶ数が増えるほど「重複あり」の上乗せが大きくなる傾向がわかるでしょう。
COMBINA関数のエラー・注意点
k が n より大きくてもエラーにならない
COMBINは「3種類から5つ選ぶ」のような、k が n より大きい指定でエラーになります。重複なしでは、3種類から5つを選びようがないからです。
一方のCOMBINAは同じものを何度でも選べるので、k が n より大きくても計算できます。
=COMBINA(3, 5)
=COMBIN(3, 5)
1行目は「21」、2行目は #NUM! エラーを返します。重複ありで数える場面なら、COMBINAに切り替えるのが正解。
小数・負数・文字列を入れたとき
小数はエラーにならず、計算前に小数点以下が切り捨てられます。
=COMBINA(5.8, 2.3)
この式は =COMBINA(5, 2) と同じ扱いになり、「15」を返します。
負の数は、公式ヘルプが定める「0以上」の範囲外。正しい結果は期待できないため、入力前に0以上の数値かを確かめましょう。
文字列にも注意が必要です。参照先のセルに「3個」のような文字が入っていると、うまく計算できないことがあります。単位は別の列に分け、数値だけを入れておくと安心でしょう。
引数の順序は入れ替えられない
COMBINAの n と k は対称ではなく、入れ替えると別の計算になります。
=COMBINA(3, 2)
=COMBINA(2, 3)
1行目は3種類から2つで「6」。2行目は2種類から3つ選ぶ計算となり、「4」を返します。2種類をA・Bとすると、AAA・AAB・ABB・BBBの4通りです。
1つ目が「種類の数」、2つ目が「選ぶ数」と覚えておけば、取り違えは防げるはず。
大きな値を入れたとき
公式ヘルプでは、非常に大きい値を指定すると #NUM! エラーになるとされています。身近な場合の数を数える程度なら気にする場面は少ないものの、心当たりのない #NUM! が出たら引数の桁を見直してください。
まとめとよくある質問
まとめ
=COMBINA(n, k)は、同じものを何回選んでもよいときの組み合わせ数を返す- COMBINより多いのは、「バニラ×2」のような同じものの重ね選びも数えるから
- 並び順も区別したいならPERMUTATIONA。n と k は入れ替えない
まずは =COMBINA(3, 2) を入力して、6が返ることを確かめてみてください。
よくある質問
Q. COMBINとCOMBINA、どっちを使えばいい?
一度選んだものをもう一度選べるならCOMBINA、選べないならCOMBINです。チーム分けや抽選のように、同じ人や番号が重ならない場面はCOMBINの出番。詳しくはCOMBIN関数の使い方で解説しています。
Q. k が n より大きいとどうなる?
COMBINAならエラーにならず、=COMBINA(3, 5) は21を返します。COMBINで同じ指定をすると #NUM! エラーになるので、使い分けに注意しましょう。
Q. 順序も区別したいときは?
同じものを何回でも選べて順序も区別するなら、PERMUTATIONA関数を使います。サイコロ2個を区別するなら、=PERMUTATIONA(6, 2) で36通り。
関連する関数
人を決まった人数ずつのグループに分ける場合の数は、MULTINOMIAL関数で求められます。
