スプレッドシートのCOMBIN関数の使い方|組み合わせ

スポンサーリンク

「10人から3人のチームを作るとき、何通りの組み合わせがあるんだろう?」

抽選やチーム分け、メニューの選択パターンなど、場合の数を数えたい場面は意外と多いですよね。

手計算だと数が大きくなるほど大変です。

そんなときに使えるのがCOMBIN関数です。2つの数を指定するだけで、組み合わせの数を一発で計算してくれます。

この記事では基本の書き方から実務での活用例、PERMUT関数やFACT関数との関係まで紹介します。

COMBIN関数とは?

COMBIN関数(読み方: コンビネーション関数)は、n個の中からr個を選ぶ組み合わせの数を返す関数です。

名前は英語の「combination(組み合わせ)」からきています。

数学の授業で習った「nCr」の計算をしてくれる関数ですね。

たとえば =COMBIN(10, 3) と書くと「10人から3人を選ぶ組み合わせ」、つまり「120通り」が返ります。

組み合わせとは、選ぶ順番を考えない選び方のことです。

「AさんBさんCさん」と「CさんBさんAさん」は同じ1通りとして数えます。

COMBIN関数にできることをまとめると、次のとおりです。

  • 指定した総数から指定した個数を選ぶ組み合わせの数を計算する
  • チーム分けや班決めで何パターンあるか調べる
  • 抽選やくじ引きの当選確率の計算に使う
  • メニューやオプションの選択パターン数を求める

NOTE

COMBIN関数はGoogleスプレッドシートの全バージョンで使えます。Excelとの互換性も完全なので、ファイルのやり取りでも安心です。

COMBIN関数の書き方(構文と引数)

基本構文

=COMBIN(n, r)

カッコの中に「n(総数)」と「r(選ぶ個数)」の2つを入れます。

引数の説明

引数必須/任意説明
n必須全体の総数。0以上の整数を指定する
r必須選択する個数。0以上かつn以下の整数を指定する

たとえば10人から3人を選ぶなら、nが10、rが3です。小数を指定した場合は、小数点以下が切り捨てられます。

COMBIN関数の基本的な使い方

もっともシンプルな使い方

数値を直接指定するパターンです。

=COMBIN(5, 2)

結果は「10」です。5人から2人を選ぶ組み合わせは10通りあります。

=COMBIN(10, 3)

結果は「120」です。10個から3個を選ぶ組み合わせですね。

=COMBIN(6, 6)

結果は「1」です。6個すべてを選ぶ場合は1通りしかありません。

セル参照を使う

A1に総数「40」、B1に選ぶ個数「4」が入っているとします。

=COMBIN(A1, B1)

結果は「91390」です。40人から4人を選ぶ組み合わせは91,390通りもあります。

セル参照を使えば、値を変えるだけで結果が自動更新されます。

特殊なケース

選ぶ個数が0のとき、結果は「1」です。何も選ばないパターンは1通りという意味です。

=COMBIN(10, 0)

結果は「1」です。

選ぶ個数が1のとき、結果は総数と同じになります。

=COMBIN(10, 1)

結果は「10」です。10個から1個を選ぶ方法は10通りですね。

COMBIN関数の実践的な使い方・応用例

チーム分けのパターン数を調べる

20人の部署から5人のプロジェクトチームを作るとします。

=COMBIN(20, 5)

結果は「15504」です。15,504通りもの組み合わせがあります。

TIP

複数チームに分ける場合は、最初のチームの組み合わせ数だけでは足りません。全チームのパターン数は、順番にCOMBIN関数で計算して掛け合わせます。

抽選の当選確率を計算する

宝くじの当選確率を求めてみましょう。45個の番号から6個を選ぶ場合の組み合わせは次のとおりです。

=COMBIN(45, 6)

結果は「8145060」です。約814万通りの中から1つが当たりなので、当選確率は次のように計算できます。

=1/COMBIN(45, 6)

結果は「0.00000012…」です。約814万分の1ですね。

商品の組み合わせパターンを数える

10種類の商品から3種類を選んでセットにする場合です。

=COMBIN(10, 3)

結果は「120」です。120パターンのセット商品を作れます。

会議の握手問題

8人の会議で全員が1回ずつ握手をすると、全部で何回の握手が発生するかを求められます。

=COMBIN(8, 2)

結果は「28」です。2人ずつの組み合わせなので、COMBIN関数で計算できます。

よくあるエラーと対処法

COMBIN関数で発生しやすいエラーをまとめました。

エラー原因対処法
#NUM!rがnより大きい(例: COMBIN(3, 5))選ぶ個数が総数以下か確認する
#NUM!n または r に負の数を指定した0以上の整数を指定する
#VALUE!引数に文字列が入っているセル参照先が数値かどうか確認する
#ERROR!構文ミス(カッコ忘れ・カンマ漏れ等)数式の入力内容を見直す

選ぶ個数が総数を超えているとき

もっとも多いエラーです。5人しかいないのに10人選ぶことはできませんよね。

=COMBIN(5, 10)

この数式は#NUM!エラーになります。nとrの指定が逆になっていないか確認してみてください。

引数に小数を指定したとき

小数を指定してもエラーにはなりません。小数点以下が切り捨てられて計算されます。

=COMBIN(5.8, 2.3)

この数式は =COMBIN(5, 2) と同じ結果で「10」を返します。

COMBIN関数と似た関数との違い・使い分け

関数動作順番の区別重複
COMBIN組み合わせの数を返す区別しないなし
PERMUT順列の数を返す区別するなし
COMBINA重複組み合わせの数を返す区別しないあり
FACT階乗(n!)を返す

COMBIN関数とPERMUT関数の違い(組み合わせ vs 順列)

もっとも混同しやすいのがこの2つです。違いは選ぶ順番を区別するかどうかです。

  • COMBIN関数(組み合わせ): 順番を区別しない。A,B,CとC,B,Aは同じ1通り
  • PERMUT関数(順列): 順番を区別する。A,B,CとC,B,Aは別の1通り

5人から3人を選ぶケースで比べてみましょう。

=COMBIN(5, 3)

結果は「10」です。組み合わせは10通りです。

=PERMUT(5, 3)

結果は「60」です。順列は60通りです。

順列(60)は組み合わせ(10)の6倍ですね。これは選んだ3人の並べ方が3! = 6通りあるためです。

使い分けのポイントは次のとおりです。

  • チーム分け・委員選び → COMBIN(誰を選ぶかだけが重要)
  • リレーの走順・座席の並び → PERMUT(順番も重要)

COMBIN関数とCOMBINA関数の違い(重複なし vs 重複あり)

COMBINA関数は同じ要素を複数回選べる組み合わせ(重複組み合わせ)を計算します。

=COMBIN(5, 3)

結果は「10」です。5種類から3つを選ぶ(重複なし)。

=COMBINA(5, 3)

結果は「35」です。5種類から3つを選ぶ(重複あり)。

使い分けのポイントは次のとおりです。

  • 掃除当番を3人選ぶ → COMBIN(同じ人を2回選べない)
  • ドリンクを3杯注文する → COMBINA(同じドリンクを複数選べる)

COMBIN関数とFACT関数の関係

FACT関数は階乗(n!)を返す関数です。実は、COMBIN関数の計算結果はFACT関数で再現できます。

組み合わせの公式は「nCr = n! / (r! x (n-r)!)」です。

これをFACT関数で書くと次のようになります。

=FACT(10) / (FACT(3) * FACT(10-3))

結果は「120」です。これは =COMBIN(10, 3) と同じ結果ですね。

COMBIN関数はこの面倒な計算を1つの関数で済ませてくれるわけです。通常はCOMBIN関数を使えば十分です。

Excelとの違い

COMBIN関数はExcelとGoogleスプレッドシートで完全に同じ動作です。

項目ExcelGoogleスプレッドシート
構文=COMBIN(数値, 抜き取り数)=COMBIN(n, r)
動作組み合わせの数を返す組み合わせの数を返す
小数の扱い小数点以下を切り捨て小数点以下を切り捨て
エラー時#NUM! / #VALUE!#NUM! / #VALUE!

引数名の表記が若干異なるだけで、機能は完全に同じです。

まとめ

COMBIN関数は、n個の中からr個を選ぶ組み合わせの数を求める関数です。

ポイントを整理します。

  • 構文は =COMBIN(n, r) の2引数。組み合わせの数(nCr)を返す
  • チーム分けや抽選の確率計算など、「何通りあるか」を調べるときに便利
  • PERMUT関数(順列)との違いは、選ぶ順番を区別するかどうか
  • COMBINA関数は同じ要素を複数回選べる「重複組み合わせ」を計算する
  • FACT関数の階乗で同じ計算ができるが、COMBIN関数のほうがシンプル
  • ExcelのCOMBIN関数と完全に同じ動作で、互換性も安心

まずは =COMBIN(10, 3) で「10個から3個を選ぶ組み合わせ = 120通り」から試してみてください。

タイトルとURLをコピーしました