- ベストアンサー
エクセルで組み合わせ計算
質問があります。エクセル使えば計算とか、いろいろ覚えれば簡単に出来ると言われ前に組み合わせ計算教わった記憶が、あるんですが忘れてしまったので分かる方教えて下さい。 質問内容は、 数字で1・2・3・4・5・6・7があります。 7個の数字を3個ずつ組み合わせしたいんです。 (1・2・3)(1・2・4)(1・2・5)このような感じ何ですが 同じ数字がダブらない様にしたいんです。途中で(2・3・1)があると先に書いた(1・2・3)があるので×何ですが全部で35通りの組み合わせになると思うんですが、この様な計算も1欄で組み合わせ表示が出来るんでしょうか? また、この程度のエクセルレベルは初級位でしょうか? 宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[ANo.1この回答への補足]に対するコメント、 Excel の[ヘルプ]くらいは、ご自分で読んでみてください。 例えば7人の選手から、3人1組のチームを作る場合の組み合わせの数を求めます 。なんてなことが書いてあるはずです。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
>エクセル使えば計算とか、いろいろ覚えれば簡単に出来ると言われ前に組み合わせ計算教わった記憶が、あ・・ 関数は種類も多く、入力する文字数は多数文字ではないものの、それを使う背景知識がないと、呪文にしか過ぎません。COMBIN関数でも、組み合わせという概念が十分わからない人にとっれは役立たないように。 >この様な計算も1欄で組み合わせ表示が出来るんでしょうか エクセルの関数の根本がわかっていませんよ。 エクセルの関数は、セルの値を多数使って処理できますが、1セルに書いた関数が返す「値」は1つです(大原則)。 ですから具体的な組み合わせ(1,2,3)のような3値を返すことは1篇にはできません。 組み合わせの数なら返せます。1つのn!/k!(n-k)!を計算すればよいのですから。n!はFACT関数を使う。 私の経験ではエクセルは組み合わせの問題は不得意分野だと思います。例えばセルの桁数も15桁程度で、組み合わせや順列の階乗を使うものはすぐオーバーします。人工知能風でないので、考える手助けもしてくれません。 エクセルを使うにしても、考えを組み立てるのは人間なので、こういう質問は数学カテゴリにすべきと思います。どう考えたら良いか、どう計算したらよいかがわかって初めて、エクセルの出番です。 ==== 7個より3つを取り出すのは複雑なので、2つで考えてみる。 実質中学程度の知識しかなく、拙いとは思うが A1:H8 1 2 3 4 5 6 7 1 2 2 1 3 3 1 3 2 4 4 1 4 2 4 3 5 5 1 5 2 5 3 5 4 6 6 1 6 2 6 3 6 4 6 5 7 7 1 7 2 7 3 7 4 7 5 7 6 A列と第1行は手入力する。 B2の式は =IF($A2<B$1,"",IF($A2=B$1,"",$A2&" "&B$1)) B8まで式を複写する。B2:B8の式をH2:H8まで式を複写する。 結果 上記 ーー 重複を排除するために、データを1列にならべる為に、プログラムで処理する。(私の誤解で、重複排除は必要ないことが後刻わかったがそのままにします) 標準モジュールに Sub test01() k = 1 Dim cl, s As Range For Each cl In Range("B2:H8") If cl = "" Then GoTo p01 For Each s In Range("J1:J" & k) If s = cl Then Exit For Next Cells(k, "J") = cl k = k + 1 p01: Next End Sub ーー これを実行すると J列に(スペースの関係で折り返したが実は1列) 2 1 6 1 3 1 6 2 3 2 6 3 4 1 6 4 4 2 6 5 4 3 7 1 5 1 7 2 5 2 7 3 5 3 7 4 5 4 7 5 ー 7 6 の21行は出る。=COMBIN(7,2)-->21と一致。 重複排除の方法については、手間隙掛けて組めば、関数と操作(フィルタ)などでできそう。<=今回のケースでは、この行不要に気づいた) ==== 2個の組み合わせでも結構複雑ということを言いたくて出したもの。 3,4個と増えると幾何級数的に式や考え方が複雑になる。 多分そんなに簡略な方法はないのではと思う。
お礼
いろいろと長々とありがとうございました。問題は解消できました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 少し、この件でコメントさせていただきます。 >この様な計算も1欄で組み合わせ表示が出来るんでしょうか? いいえ。単に組み合わせの数だけです。確か、別の掲示板で、それを関数で書いている人をみたことがありますが、少ない数ならともかく、数が多くなると複雑で、私には出来ません。 組み合わせ表示に関しては、私は、ここの掲示板では回答はしていません。今まで、2回ほど、私は見ていますが、2回とも回答はしていません。コメントのみです。ここでは、イチゲンの回答者の方が答えるのみだと思います。 この組み合わせ表示に関しては、プログラムの中の特別なアルゴリズムを使うわけですが、多くの人が、順列に対しては公開しても、組み合わせに対しては、非公開なので、公開していません。また、インターネット検索しても、出来上がりは分かっても、その内容については、国内では出てこないはずです。 ただ、実際のここの質問者の方が、簡単に考えすぎていることと、質問自体が、Excelの一般計算の範囲では機能的に不可能な問題であるということを認識していないこともあります。万が一、答えを書いても「分かりませんでした」などと言われたら、徒労に終わることが見えているからです。 組み合わせの数自体は、簡単な数学の計算ですから、仮に関数を知らなくても、大した問題にはなりませんが、組み合わせの中身を表示するというのは、非常に面倒なプログラムが必要です。 関数だけでしたら、 組み合わせのことを、COMBINATION (コンビネーション)というのが分かりさえすれば、 COMBIN(総数,抜き取り数) であり、 順列のほうは、 PERMUTATION (パーミュテーション)といいますから、 PERMUT(標本数,抜き取り数) ということは、関数辞典でも、ヘルプでも分かるかとは思います。 >この程度のエクセルレベルは初級位でしょうか? 私の意見からすると、関数に関しては、Excelの基本関数とは別のところにあるように思いますから、少なくとも、初級で覚えなくてはならない関数ではありません。プログラムに関しては、はるか彼方というしかありません。VBAの2~3年のレベルではないことは明らかです。 =COMBIN(7,3) は、 =FACT(7)/(FACT(3)*FACT(7-3)) という式でも書き表せますし、単純な A B C D 7 6 5 210 =PRODUCT(A1:C1) /=A1*B1*C1 3 2 1 6 =PRODUCT(A2:C2) /=A2*B2*C2 35 =D1/D2 でも出来ます。 私は、あまり教えられることはありませんが、当面の問題は解決できますでしょうか?
お礼
いろいろと長々とありがとうございました。問題は解消できました。
=COMBIN(7,3)
補足
すいません、もう少し詳しく教えてもらえますか? =COMBIN(7,3)は、どんな関数なんでしょうか?
お礼
コメントありがとうございます。選手から3人1組で解けました。 わかりゃやすいコメントありがとうございました