秘密基地、どこに作った?

エクセルで用意された氏名・所属・年齢・性別データが約2000件あります。各データは氏名のあいうえおごとに作成したシートに入っています。各シートには0から最大で100件のデータがあります。これらのデータを、あいうえお順ではないランダムな10のグループに分け直したいのですが、どうしたらよろしいでしょうか。

A 回答 (2件)

お呼びでないかもしれませんが、マクロで行う例です。


各シートのデータ構造は下記の通りと仮定し、「サンプリング」というシートに、残りの各シートのデータをランダムな順番で拾い出します。ランダムな順なので、頭から10ブロックに分ければ良いと思います。
....................A...............B...............C...............D
..1..............氏名.........所属.........年齢.........性別
..2..............花子.....営業部.............29.............女
..3..............太郎.....総務部.............36.............男

最近Collectionに凝っておりまして、それを使って作成してみました。
Sub test()
Dim sh As Worksheet
Dim targetRanges As Collection
Dim tempRange As Range
Dim myRow As Range
Dim destRange As Range
Dim pickUp As Long

Set targetRanges = New Collection
For Each sh In ThisWorkbook.Worksheets
If sh.Name <> "サンプリング" Then
Set tempRange = sh.Range("a1").CurrentRegion
If tempRange.Rows.Count > 1 Then
Set tempRange = tempRange.Offset(1, 0).Resize(tempRange.Rows.Count - 1, tempRange.Columns.Count)
For Each myRow In tempRange.Rows
targetRanges.Add Item:=myRow
Next myRow
End If
End If
Next sh
Set destRange = Sheets("サンプリング").Range("a1")
'Collectionからランダムな順番で抜き出す
Do While targetRanges.Count >= 1
Randomize
pickUp = Int(Rnd() * targetRanges.Count) + 1
targetRanges(pickUp).Copy destRange
Set destRange = destRange.Offset(1, 0)
targetRanges.Remove (pickUp)
Loop
End Sub
    • good
    • 0

A:D列にデータがあるとして


E2=RAND()
F2=ROUNDUP(RANK($E:$E,E2,0)/(COUNT($E:$E)/10),0)
これを最後の行までコピー
F列に1~10の数値が表示されるのでこの内容をコピーして
G列に値として貼り付けしてください。
後はG列で並べ替えるなり、オートフィルタで選択するなりして
G列の数値毎に別シートに内容を貼り付けてください。
    • good
    • 0
この回答へのお礼

早速にありがとうございました。簡単な仕事なのですが、手作業ではとてつもなく時間が掛かってしまいそうで、気が滅入っていたところでした。助かります。

お礼日時:2008/09/03 16:21

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


おすすめ情報