• ベストアンサー

エクセル・データをランダムにグループ分けする

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

  • 3733Q
  • お礼率50% (1/2)

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.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

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

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

3733Q
質問者

お礼

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

関連するQ&A

  • エクセルのデータ分けの方法を教えて下さい

    ある小学校で、学年・クラス・氏名・性別があいうえお順で30~40人ぐらい入っているエクセルデータが、23個あります。1学年は約90~130人、クラス数は学年により違い3~5クラス。総勢で約700人。 (したい事) 学年縦割りで6~7人程度ランダムに振り分けて、100くらいの小グループをつくりたいのです。 (条件) 小6または小5が必ず1人以上、小グループに属すること。小4以下はいない学年があっても構わない(ある小グループには小3がいないなど)。 上記のようなことを簡単にできる方法ってあるでしょうか?エクセルに詳しい方、教えて下さい。

  • データに条件付をつけてまんべんなくばらばらにグループ分けする方法

    こんばんは いつもお世話になります 沢山の項目があるデータを内容にかたよりがなくばらばらになるように数枝にグループ分けする方法を教えてください。 まんべんなくランダムに、と言ったらいいでしょうか・・・。 例えば、日本全国からの個人データ(氏名・都道府県名・年齢・性別・職業・・・)があったとし これを「都道府県名・年齢・性別・職業・・・」がまんべんなくランダムに 3組に、 そして、それぞれ5から6人くらいのグループに分ける それぞれの組・グループの「都道府県名・年齢・性別・職業・・・」がまんべんなくばらばらになるように分けたいのです。 ランド関数だと、どうしてもかたよってしまい あるクラスは男女の比が6:4なのに、あるクラスは3:7とか・・・ 手直しすると、逆に他の項目でかたよりが・・・ときりがありません エクセルは中級・アクセスは初級程度ですが 多少原始的な方法があってもとりあえずいいので (時間がないので) なにかアドバイスよろしくお願いします。

  • エクセルデータ

    エクセル初心者です。 以下の画像のような表を作っています。 上段が請求書データ(シート1)で、下段が 請求書の送付先及び金額データ(シート2)です。 今、 シート1のデータの内容を、シート2のように 送付先別に転記したいのですが、 シート1の 氏名の名字が同じで、かつ、住所が同じの人は 一つの請求書にして、金額も合計して 転記したいのです。 現在、シート2にすべての請求データが表示されていますが できれば差し込み印刷風に、一件一件ごとのグループ表示がいいです。 請求先は、一番上にくる人だけ氏名記載で、それ以降は名前 表示だけにしたいのですが、関数がわからず 手処理しています。 よろしくお願いします。

  • エクセル関数を使って、ランダム抽出をしたいです

    エクセル関数を使って、ランダム抽出をしたいのですが どの関数を使用すればいいのかわからないのです。 現在、1つのシートにいろいろなデータが入っているのですが、 D列のデータを使い、そのデータをランダムに25件抽出したいのです。 よろしくお願い致します。

  • エクセルで住所と名前をランダムに並べるには?

    エクセルでsheet1のA列に氏名、B列に住所があるとします。 関数を使ってsheet2にランダム表示させるにはどうすればいいでしょうか? (sheet1のA列とB列のデータはそのままにしておきたいです)

  • 未熟者ですが、エクセルで参加者の名簿を作っています。

    未熟者ですが、エクセルで参加者の名簿を作っています。 初めのシートには氏名、性別、年齢、所属チーム、第1回参加者、第2回参加者、第3回参加者…等の項目を記入しています。この資料を元に、違うシートにそれぞれの項目ごとの名簿を作ることはできますか? 例えば、性別ごとの名簿、所属チームごとの名簿、第1回参加者名簿、第2回参加者名簿、第3回参加者名簿のようにです。初めのシートの名簿は性別ごと、五十音の順に並び変えることは出来ましたが、その次に項目ごとの名簿を作りたいと思っています。なにぶんにも未熟者ですので解りやすいご指導をお願い申し上げます。

  • EXCELマクロでデータをランダムに読み込んで出力するには?

    初心者です。よろしくお願いします。 EXCELに入っている1000個ぐらいのデータの中から例えば200~400までのデータで、その中からランダムに30個取り出して違うシート内に出力したい場合どのようなプログラムを組めばいいのでしょうか? よろしくお願いします。

  • データをグループ分けしたい

    次のようなデータがありますが、これをグループ分けしたいと思います。IF関数で可能でしょうか?? 項目 氏名/希望1/希望2/希望3/OS 希望1~3にはいずれかに○が入っている OS には、98、2000、XPのいずれかがはいっている 新しく「グループ」という項目を作り、 以下の組み合わせでグループ分けをしたいと考えています。 Aa)希望1=○ OS=98 Ab) 希望1=○ OS=2000  Ac)希望1=○ OS=XP Ba)希望2=○ OS=98 Bb) 希望2=○ OS=2000  Bc)希望2=○ OS=XP Ca)希望3=○ OS=98 Cb) 希望3=○ OS=2000  Cc)希望3=○ OS=XP データは500件ほどあり、オートフィルタが使えないレイアウトになっています。手作業でやるのが一版早いでしょうか?? これって関数でできますか?

  • エクセルの関数?

    シート1に氏名と性別と生年月日を入力したデータがいっぱいあるとします。このデータは毎日増えていきます。 そこで、シート1の並べ替えを行なわずシート2に生年月日順に並べ替えたデータが並ぶようにする方法ってありますか?

  • Excel計算式を教えてください

    添付の様な100人の元データSheet1(氏名、年齢、性別)から、Sheet2の30歳代~90歳代の年齢層別の男女の人数をExcelの計算式で求めたいのですが、残念ながら私の能力ではどんな式を使ったら良いのかわかりません。 識者の皆さん、教えてくださいませんか?

専門家に質問してみよう