- ベストアンサー
エクセルでランダム組み合わせする方法
はじめまして、エクセルを使用してある集団からランダムに組み合わせを作りたいのですがよい方法あるいはヒントがあればアドバイスをいただきたいのでよろしお願いします。 具体的には、7列12行の席があり、その中からランダムに7席(名)を選んで1~3チームを作るというものです。各チーム内で重複しないようにし、7席(名)を選択する方法あればベストですが、それに近い方法でもよいです。(結果を見て、重複席を自分で変更するなど微調整できればよいと思っています。 ちなみに7列12行のそれぞれのセルには氏名か番号をつける予定です。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
[回答番号:No.4この回答への補足]に対するコメント、 A B C … G 1 座席表 2 A01 B01 C01 … G01 3 A02 B02 C02 … G02 4 A03 B03 C03 … G03 … … … … … … 13 A12 B12 C12 … G12 Q R 1 乱数 名前 2 0.9199 A01 3 0.0623 B01 4 0.1686 C01 … ……… … 8 0.2037 G01 9 0.3649 A02 10 0.8395 B02 … ……… … 84 0.3442 F12 85 0.6138 G12 Q2: =RAND() R2: =OFFSET($A$2,INT((ROW(A1)-1)/7),MOD(ROW(A1)-1,7)) I J K L M N O 1 チーム名 メンバー名前 2 Team_01 D11 E07 C03 B07 G02 F10 3 Team_02 B05 B01 C09 A04 B10 A09 4 Team_03 E02 B06 B08 E11 C07 C01 … ……… … … … … … … 13 Team_12 E03 A01 F08 E09 E06 F05 J2: =VLOOKUP(SMALL($Q$2:$Q$85,COLUMN(A1)+(ROW(A1)-1)*7),$Q$2:$R$85,2,0)
その他の回答 (4)
[回答番号:No.3この回答への補足]に対するコメント、 お書きになっている内容を全く理解できません。 [回答番号:No.2]に挙げた表(範囲 C2:J13)がどのようになれば良いのか具体例をお示しください。 私の回答がそうであるように、ゴチャゴチャ文章で記述するより、希望する表を示した方が分かりやすいと思います。それで分からない場合は私も貴方に質問しやすいです。
補足
お手数をおかけします。mike_g様の先の回答で氏名を番号することで重複 しない12チームを作ることは可能であることは確認しました。既に座席表を作成しているので、そのまま直接「氏名」を使用できればと思って追加の質問をしました。こう考えればというアドバイスでもよいのでよろしくお願いします。 (1)84名の座席表(氏名)をエクセル表で以下の様に作成(A1さん、B1さん・・・) A1 B1 C1 D1 E1 F1 G1 A2 B2 C2 D2 E2 F2 G2 ・ ・ ・ ・ ・ ・ ・ A12 B12 C12 D12 E12 F12 G12 (2)座席表からランダムに7名選抜し、チームを作り、代表でゲームを行わせたり数チーム作り、ゲーム等対抗戦を行わせる。 (ゲームはスポーツ、連想ゲームなどレクレーションを想定) team_01 B2 C1 A12 E5 F10 G3 D7 team_02 F8 A5 D1 E11 A4 B5 D6 ・ ・ ・ ・ ・ ・ ・ ・ team_12 ・ ・ ・ ・ ・ ・ ・ (3)やりたいことは座席表から直接 ランダムに選抜してチーム表を作成できないかという点です。 ポイントは、ランダムに7名を選抜することと考えています。
[回答番号:No.2]の A1: ==RAND() は A1: =RAND() の間違いでした。
補足
mike_g様の回答で解決済みなのですが以下のようなことは可能でしょうか? 追加の質問ですみません。84名のメンバー(エクセルの7列12行に配置:固 定)から1チーム7名の12チーム(1~3チームでも可)にランダムに振り分ける ときに7列12行から直接選出する方法はありますか? もちろん先に回答いただいた方法で84名のメンバーを別にNo1~84まで順序 よくをつけて、ランダムに選出した12チームの番号にあわせてメンバー を配置すればよいのですが、直接7列12行に入力された番号(あるいは氏名) を12チームに配置できると助かります。(選手のゼッケンは通常バラバラなの で。。。)
A B C D E F G H I J 1 0.9454 チーム名 メンバー番号 2 0.5524 Team_01 13 60 43 80 42 40 69 3 0.8977 Team_02 04 61 84 23 47 74 50 4 0.0776 Team_03 51 26 06 75 17 79 48 5 0.6609 Team_04 63 78 52 20 09 16 54 6 0.1797 Team_05 66 68 77 71 64 45 34 7 0.9247 Team_06 11 29 73 25 49 08 02 8 0.5350 Team_07 27 15 33 30 67 05 72 9 0.3160 Team_08 22 44 41 31 10 58 46 10 0.7086 Team_09 37 35 38 65 55 24 81 11 0.4843 Team_10 70 32 59 82 36 18 03 12 0.9026 Team_11 12 76 19 07 62 01 14 13 0.0127 Team_12 28 57 53 56 83 21 39 14 0.9599 … ……… 83 0.9849 84 0.0997 A1: ==RAND() D2: =MATCH(SMALL($A$1:$A$84,COLUMN(A1)+(ROW(A1)-1)*7),$A$1:$A$84,0)
お礼
mike_g様どうもありがとうございました。 そのままエクセルで作成して、12チーム重複しない組み合わせを作ることが できました。チームは1~3チーム作ればよいのですが12チームすべて重複し ない組み合わせができるとは思いませんでした(感動)。 後は、個々の席(あるいは人)にゼッケン(No1~No84)をつけて、たとえば Team01、Team05、Team11のチームの番号のゼッケンの人を配置すればよいと いうことで対応できそうです。 A1:=RAND()も了解しました。
- web2525
- ベストアンサー率42% (1219/2850)
EXCELさんはランダムの処理は結構苦手です。 関数でRND関数は有るけど、再計算で数値が変化してしまうので、そのあたりの工夫が必要に。 選出のルールが解り難い気がします >7列12行の席があり7席(名)を選んで1~3チームを作る 84名中7名1チームで最大3チーム作成? 7名*3組=21名 4回分の組み合わせを作る言う事? 重複しないって事は一回チームに参加した人は2回目以降は省くと言う事かな? ちっともランダムでないような気がしますが ランダムにする必要性もわかりませんし、7列12行なら行ごとに1チームと言うわけにはいかないのでしょうか? 実用的な方法ではなく、考え方(手法)に関する質問なのかな?
お礼
web2525様どうもありがとうございました。 説明が不足していました。ご指摘のとおり行ごとに1チームにすることで よいのですが、何回かチーム編成を行いたいのでランダムに選手を選出する ようなことがしたかったのです。質問をもう少し目で見える形で行った方が よかったと思いました。ご指摘ありがとうございました。
お礼
mike_g様どうもありがとうございました。またまた感動しました。 mike_g様のアドバイスとおりというか、そのまま表や関数をコピーして思って いたものを完成することができました。 質問方法を具体的にするなどアドバイスもありがとうございました。