dポイントプレゼントキャンペーン実施中!

お世話になります。

エクセル上の名簿(59人)でランダムに9グループ(7人を5グループ、6人を4グループ)に分けたいと思います。

マンネリを避けるためにランダムで組みたいと思いますが、エクセルの機能で良い具合にグループ分けをしてくれる機能は、ないでしょうか。

どなたかお詳しい方、よろしくお願いします。

A 回答 (6件)

1.範囲 F2:F60 に59人の名前を入力


2.セル E2 に式 =RAND() を入力して、此れを下方にズズーッとドラッグ&ペースト
3.セル C2 に式 =VLOOKUP(SMALL(E$2:E$60,ROW(A1)),E$2:F$60,2,FALSE) を入力して、
  此れを下方に(セル C60 まで)ズズーッとドラッグ&ペースト
4.グループ分けは次のようにすればよろしいかと
   7人グループ1 → C2:C8
   7人グループ2 → C9:C15
   7人グループ… → ………
   7人グループ5 → C30:C36
   6人グループ1 → C37:C42
   6人グループ2 → C43:C48
   6人グループ3 → C49:C54
   6人グループ4 → C55:C60
「エクセル 名簿でランダムに」の回答画像5
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
すごいっすね。できました。ありがとうございます。
どうしたら、そんなにエクセルをマスターできるんですか!?

お礼日時:2011/01/06 09:40

ANo3 merlionXXです。



> バージョンは、2010です。
> VBAの画面が出てこないので、ネットでVBA画面の出し方を調べて出しました。
> それに貼り付けることはできたんですが、それ以降をどのように行えば良いのか分からなくなってしまいました。

Windows7/Excel2010を持っている方のところで試してきました。
2007までと同様に
ワークシート画面から、Altキー+F11キーでVBE画面にいけました。
VBE画面から、Altキー+F11キーで、またワークシートに戻れました。
ワークシート画面でAltキー+F8キーで、マクロ実行のダイアログも出ました。

標準モジュールにちゃんとコピペされているかどうかもう一度確認してから、再度お試しください。
    • good
    • 0

既回答もそれと思うが、1-59の乱数を59人の作業列にふり、その乱数順にソートする。

もちろん同番号は現れるが、ソートすることにより、同じ乱数値でも上からの順位(場所というか)は決めてくれる。
これで上から7人ずつ5組と、残り6人を4組作れば良い。
エクセルの関数RAND、RANDBETWEENを使う。
http://d.hatena.ne.jp/sutara_lumpur/20080826/121 …
http://aoki2.si.gunma-u.ac.jp/Hanasi/excel/のような記事もあります。
しかし質問程度の場合は気にしなくても良いかと。
乱数が出た直後に、乱数の式を消して、自身のセルに値化するほうが良いと思います。(形式を選択して貼り付けー値)
エクセル関数のSeed値
VBAの場合はシード値を指定できます。
http://officetanaka.net/excel/vba/function/Rnd.htm
ーー
一発で出すなら
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
難しいっすね。やってみます。

お礼日時:2011/01/06 09:25

エクセルのバージョンは何ですか?


すくなくとも2007までは試したことがあり、この方法で大丈夫だと思うのですが・・・。

> VBAにコピペするところまでは、できたんですが、その後、Alt+F11、Alt+F8ができません。
> そもそも、Alt+F11でVBAがでてきませんでした。

Alt+F11でVBE画面がでなかったら、どうやってどこに貼り付けましたか?
「エクセル 名簿でランダムに」の回答画像3
    • good
    • 0
この回答へのお礼

たびたびのご回答ありがとうございます。

バージョンは、2010です。

VBAの画面が出てこないので、ネットでVBA画面の出し方を調べて出しました。
それに貼り付けることはできたんですが、それ以降をどのように行えば良いのか分からなくなってしまいました。

何度もすみません。

お礼日時:2011/01/06 09:24

Rand関数での方法はすでに出ていますが、関数方式だと再計算のつどグループが再設定されてしまいます。


その点、マクロならユーザーが指示しない限りそのままの状態を維持します。

以下の前提でマクロを作成しました。
・対象となる59名のデータはSheet1のA1セルからA59セルにある。
・グループを書き込む先はSheet2のA列からI列に7名5グループ、6名4グループ、Sheet

手順は以下のとおりです。とても簡単ですよ。

1.データのあるエクセルの画面上で、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。
2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。

'********これより下**********

Sub test01()
  Dim ws(1 To 2) As Worksheet
  Set ws(1) = Sheets("Sheet1")
  Set ws(2) = Sheets("Sheet2")
  Randomize
  With ws(2)
    Application.ScreenUpdating = False
    ws(2).Cells.ClearContents
    ws(1).Range("A1:A59").Copy .Range("A1:A59")
    For i = 1 To 59
      .Cells(i, "B") = Rnd
    Next i
    .Range("A1:B59").Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlNo, Orientation:=xlTopToBottom
    .Range("B1:B59").ClearContents
    For i = 1 To 10
      x = IIf(i > 5, 1, 0)
      .Range(.Cells(8 - x, i), .Cells(8 - x, i).End(xlDown)).Cut Destination:=.Cells(1, i + 1)
    Next i
    Application.ScreenUpdating = True
  End With
End Sub

'********これより上**********

3.Alt+F11キーでワークシートへもどります。
4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

上記4.を何度でも実行できます。
その都度Sheet2のグループ構成員はランダムに変わります。
お試しください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

VBAにコピペするところまでは、できたんですが、その後、Alt+F11、Alt+F8ができません。
そもそも、Alt+F11でVBAがでてきませんでした。

どうしたら、よいでしょう。

お礼日時:2011/01/05 16:14

図のようにA列にランダムで大きい数字を表示し、


B列にA列の数字の順位をつけ、それを59行目までコピーして、
順位に対応する出席番号にすれば大丈夫だと思います。

しかしこの方法だとグループ分けができないので、
上から何人がAグループ、みたいな分け方をしなければなりません。

あと、ランダムの数字の表示は何か作業をするごとに変化してしまうので、
気をつけてください。

※ ランダムの表示なので小さい確率で同じ数字が表示される場合がありますが、
  どこかに一文字入力するなど何か作業をすれば数字は変化します。

A1内容 =RAND()*100000000
B1内容 =RANK(A1,$A$1:$A$59)
「エクセル 名簿でランダムに」の回答画像1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!