• ベストアンサー

ランダムに振り分けを(並び換え)する場合

町内でグランドゴルフをします。 今、Excelで名簿を作っており、例えばA地区の30人分を打ち、次はB地区の30人分、C地区・・・・・といったように地区ごとかたまっています。名前を50音順でソートをかけたら、ある程度はバラバラに並び変わりますが、同じ地区に同姓の人がいたら、重複します。 私がやりたいのは各地区から一人ずつで選んだチーム分けをしたいです。なおかつ次に振り分けるときも、新たな振り分けにしたいです。 また、ボタンをシートに貼り、そのボタンをクリックする度に、並びが換わるようにしたいので、その方法も教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

質問の詳細がわかりませんが、各地区のチーム一人ずつ、たとえばC地区まででしたら、1チーム3人の30チームを作ると言うことでしょうか。 それを前提に回答いたします。 (1)自動計算させないために、ツール/オプション/計算方法で手動にしておきます。 (2)A地区、B地区、C地区のシートを作り、シート名をそれぞれA地区、B地区、C地区とつけておく。 (3)A地区のシートにA1に=RAND() B1に=RANK(A1,$A$1:$A$30,1)を入力し、30行までコピー C1から地区の人の30人分の名前を入力する。 他のB,Cのシートも同様に作っておく。 (4)グループのシートを作り、A1:No.、B1:A地区、C1=B地区、D1:C地区のフィールド名を記入しておく。 A2~A31まで1~30を記入 B2=VLOOKUP($A2,A地区!$B$1:$C$30,2,0) C2=VLOOKUP($A2,B地区!$B$1:$C$30,2,0) D2=VLOOKUP($A2,C地区!$B$1:$C$30,2,0) を入力し、それぞれ31行までコピー これで、F9キーを押すごとに再計算を実行し、組み換えをしてくれます。 なお、重複については、質問の内容からはして良いのかどうか判断できませんでしたので、省かせていただきました。

setu0715
質問者

お礼

思い通りの振り分けになりました。 F9のキーを押すだけというのも、嬉しいです。 本当にありがとうございました

その他の回答 (1)

  • s_yoshi_6
  • ベストアンサー率73% (1113/1519)
回答No.1

名簿をどのような構成で作成されているかわかりませんが、 例えば、A列1列にA1:A30がA地区、A31:A60がB地区、A61:A90がC地区、というふうに名前が入力されていて、D列にA地区、E列にB地区、F列にC地区の選手名がランダムに並ぶようにすると、列ごとに組み合わせ表ができると思いますが、そのような感じでよろしいでしょうか。 作業列を使いますが、 1)B列を作業列としてB1に =RAND() と入力、以下コピーして乱数を発生させます。 2)D1、E1、F1それぞれに =OFFSET($A$1,RANK(B1,$B$1:$B$30)-1,0) =OFFSET($A$31,RANK(B31,$B$31:$B$60)-1,0) =OFFSET($A$61,RANK(B61,$B$61:$B$90)-1,0) と入力して以下コピーとすると、地区ごとに選手名がランダムに並ぶと思います。 これはキーボードでF9を押すと再計算されて、そのつど並べ替えが行われます。 ただし、いずれかのセルで入力などの操作を行っても再計算されますので、結果を保存するためには、並べ替え結果をコピー→別の箇所で右クリック→形式を選択して貼り付けで値を選択してOK、という手順で結果を他の場所に貼り付けておかれた方が良いと思います。

関連するQ&A