- ベストアンサー
10人を2人づつ5組にランダムに分けて表示したい。
AからJまでの10人を1組2人づつに分ける組み合わせは COMBIN(10,2)+COMBIN(8,2)+COMBIN(6,2)+COMBIN(4,2)=94通り と思われますが、これら94の組み合わせの中から、任意の1つをランダムに表示出来るようにしたい、できればEXCEL(関数またはマクロ)で。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>ランダムな順に10人をピックアップ」も人手ではなくパソコンでやって >ほしいのです。 他の方の回答も含めて、そのつもりで回答されていると思いますけれど、何を人手でやるおつもりなのでしょうか? マクロでやるならその通りの処理をOpenイベントで実行すればできますし、関数利用でも別に難しいことではありません。 関数の場合の一例を、説明した手順通りに分解して表示するなら… A1~J1に対象となる名前があるとして A2に =RAND() :順番のもとになる乱数 A3に =RANK(A2,$A2:$J2) :乱数を元に順番付け A4に =MATCH(COLUMN(),$A3:$J3,0) :順に並べた時の対称の列番号 A5に =INDEX($A1:$J1,A4) :乱数の順に並べ替えた名前 を入力して、A2~A5を選択して、右にコピーフィル。 5行目に乱数順に並べ替えた名前が表示されます。 (組み合わせは先頭から2人ずつ) 計算の手順がわかるように、1行ずつに途中経過を表示していますが、実際は途中を省略できますので、あとは適当にアレンジしてください。 (注意)Rankを使用しているので、乱数値がたまたままったく同じ値だとうまくいきませんが、RANDは実数になるので、そのようなことが起こる確率は非常に少ないと考えてよいとしています。
その他の回答 (3)
- fujillin
- ベストアンサー率61% (1594/2576)
1つの組み合わせだけを選択すれば良いのであれば、全部の組み合わせを前もってリストアップしておく必要はないのではないかな? 例えば、ランダムな順に10人をピックアップして、選んだ順に最初の2人を一組目、次の2人第二組…としてあげれば、結果的に全体の中からランダムに組み合わせを1つ選択したのと同じになるはずでは?
お礼
>全部の組み合わせを前もってリストアップしておく必要はないのではないか< そうです、「全部の組み合わせを前もってリストアップする必要はなく、そのなかの任意の1つの組み合わせ(2人X5組)を人手を介せずに表示いたいのです。 >ランダムな順に10人をピックアップして、選んだ順に最初の2人を一組目、次の2人第二組…< 「ランダムな順に10人をピックアップ」も人手ではなくパソコンでやってほしいのです。 あるところまで人手と介する方法は、実践的には有効かもしれませんが。ここでは、RUNするだけで自動的にランダムにピックアップされた10人(5組)を表示してほしいわけです。
- Tasuke22
- ベストアンサー率33% (1799/5383)
直感的に45通りかな? 十分表に収まるので簡単ですね。
お礼
質問の内容について私の説明が不十分だったため、Tasuke22さんには真意を伝え切れず、申し訳けありませんでした。 表に収めると多分45通りと思いますので、後ほど確認したいと思います。ただ、45通り全部を表に出すのが目的ではなく、F9を押す度にその45通りのどれか1つが表記されればいいのです。 有難うございました。
- koko_u_u
- ベストアンサー率18% (216/1139)
すべての場合を Excel に一列に書いて、ランダムに選べばいいのでは? # そもそも 94組なのか?
お礼
私の説明が不十分だったため、koko_u_uさんには真意を伝え切れず、申し訳けありませんでした。 この問題は、最新回答で解決しましたが、後ほど「すべての場合を Excel に一列に書いて」見たいと思います。多分94通りではなさそうです。ただ、「全部を書き出す」のが目的ではなく、F9を押す度にその中の「どれか1つがランダムに表記」されればいいのです。 有難うございました。
お礼
本題の内容について私の説明が不十分だったため、回答者の方々に真意を伝え切れず、申し訳けありませんでした。 今回のfujillinさんの回答は、私の質問に完全にこたえるものであることを実際にその通りにトライした結果、確認出来ました。 本当に有難うございました。