KutoolsforOffice— 1 つのソリューション、5 つの強力なツール。少ない労力で大きな成果。

Excel でデータリストのランダムグループを素早く生成する

著者Sun変更日

日常業務や学習・トレーニングセッションの準備中に、名前や学生 ID、プロジェクトタスクなどのデータリストをランダムにグループ分けする必要が生じることがあります。たとえば、スクリーンショット1に示されているように、データ項目がランダムにグループに割り当てられたり、スクリーンショット2に示されているように、アクティビティやグループタスクのために名前がランダムなチームに分割されたりします。この作業を効率的にこなせば、公平性を確保でき、手動での割り当てと比べて大幅な時間節約にもつながります。幸いなことに、Excel には数式、VBA による自動化、PivotTable 分析など、ランダムグループ割り当てを迅速かつ柔軟に処理できる信頼性の高い方法がいくつも用意されています。

スクリーンショット1スクリーンショット2
  グループにランダムデータが割り当てられているスクリーンショット  名前のリストにランダムデータが割り当てられているスクリーンショット

データをランダムにグループに割り当てる

指定されたデータサイズでランダムなグループを生成する

VBA でランダムグループ割り当てを自動化する(詳細オプション)

サンプルファイルをダウンロード


データをランダムにグループに割り当てる

データリストを指定された数のグループにランダムに割り当て、各グループのサイズが異なってもかまわない場合、Excel の CHOOSE 関数と RANDBETWEEN 関数を組み合わせれば、簡単に実現できます。このようなケースの例としては、ゲーム参加者のチーム編成や会議での即席グループ分けなどが挙げられます。

まず、リストの隣にある空白セル(たとえば、リストが A 列にある場合は B2 セル)を選択します。次に、以下の数式を入力してください。

=CHOOSE(RANDBETWEEN(1,3),「Group A」,「Group B」,「Group C 」)

この数式では:

  • RANDBETWEEN(1,3)は、1 から3 までの乱数を生成し、それぞれが3 つのグループのいずれかを表します。
  • グループ A、グループ B、およびグループ Cは、データの横に表示されるグループ名です。

その後、フィルハンドルを下にドラッグしてこの数式を他の行にも適用し、すべてのエントリをランダムにグループに割り当てましょう。
数式を使用してデータをグループにランダムに割り当てるスクリーンショット

この手順の後、各データエントリがランダムにグループに割り当てられます。ただし、RANDBETWEEN は揮発性関数のため、セルの編集やファイルの再開などワークシートが再計算されるたびに結果が変更されますのでご注意ください。

実用的なヒント:割り当て結果を変更したくない場合は、数式の結果をコピーして特殊貼り付け > 値で貼り付け、割り当てを固定してください。

適用可能なシナリオ:この方法は柔軟性に優れ、素早く手軽にグループ分けを行うのに最適です。ただし、各グループのサイズがばらつく可能性があるため、厳密な均等分配が求められる場面には向きません。

注意点:大規模なデータセットを扱う場合や、正確なグループサイズが求められる場合は、より細やかな制御が可能な他の方法をご検討ください。

kutools for excel ai のスクリーンショット

KUTOOLS AI でExcel の魔法を解き放ちましょう

  • スマート実行:セル操作、データ分析、チャート作成をすべてシンプルなコマンドで実現します。
  • カスタム数式:ワークフローの効率化に役立つ、あなただけのカスタマイズ数式を生成します。
  • VBA コーディング:VBA コードを簡単に記述・実装できます。
  • 数式の解釈:複雑な数式が簡単に理解できます。
  • テキスト翻訳:スプレッドシート内で言語の壁を乗り越えましょう!
AI 搭載のツールでExcel の機能をさらに強化しましょう。今すぐダウンロードして、これまでにない効率を体験してください!

指定されたデータサイズでランダムなグループを生成する

各グループに一定数のエントリ(例:各グループ4 名)を含むようにデータをランダムに割り当てるには、Excel の ROUNDUP 関数と RANK 関数を組み合わせるのが効果的です。授業での課題割り当てやバランスの取れたチーム編成など、均一なグループサイズが求められるあらゆるシーンで活用できます。

この方法を実行するには:

1.まず、データの隣に補助列(例:E 列)を追加し、E2 セルに次の内容を入力します。

=RAND()

この数式をリスト内の必要なすべてのセルまで下にドラッグしてください。RAND 関数によって、各エントリにランダムな値が自動的に割り当てられます。

2.次の列(例:F2 セル)に、以下の数式を入力してください。

=ROUNDUP(RANK(E2,$E$2:$E$13)/4,0)

ここで:

  • E2:E13:この範囲は、ご自身のデータに合わせて変更してください。=RAND()関数を含むすべての行をカバーする必要があります。
  • 4:各グループの人数です。グループごとに異なる人数が必要な場合は、この数値を変更してください。

 

フィルハンドルを下にドラッグして、この数式をすべての行に適用しましょう。これにより、データがおよそ4 エントリずつのグループに分類されます。
指定されたデータサイズでランダムなグループを生成するために数式を使用するスクリーンショット

追加のガイダンス:

  • アイテムの総数がグループサイズで割り切れない場合、最後のグループには fewer エントリが含まれることがあります。
  • ランダム化後は、特殊貼り付け > 値を使ってグループを固定し、再計算時の変更を防ぎましょう。
  • RAND() を更新すると、グループが再ランダム化されます。初期割り当てを調整したいときに便利です。

制限事項:この方法ではグループ名を直接指定できず、代わりにグループ番号が自動生成されます。また、大規模なデータセットでは数式による再計算が遅くなる可能性があります。


VBA でランダムグループ割り当てを自動化する(詳細オプション)

メンバーが複数のグループに所属しないことの保証、グループサイズの厳密な均等化、特定の制約に基づく再割り当てなど、より高度な要件をお持ちのユーザーには、VBA がより柔軟な解決策を提供します。このアプローチは、大規模なリストや繰り返しの割り当て作業に特に効果的です。ただし、VBA コードは多くの場合ワークシートのデータを直接変更するため、実行前に必ずファイルを保存してください。

1開発者ツール > Visual Basicをクリックして VBA エディターを開き、次に挿入 > 標準モジュールをクリックします。新しいモジュールに以下のコードをコピー&ペーストしてください。

Sub AssignRandomGroups()
    Dim GroupCount As Integer
    Dim GroupSize As Integer
    Dim rng As Range, cell As Range
    Dim i As Long, j As Long, idx As Long
    Dim arr() As Variant, groupArr() As Variant, grpNum As Integer
    Dim ws As Worksheet
    Dim totalRows As Integer, remaining As Integer
    
    On Error Resume Next
    Set ws = Application.ActiveSheet
    Set rng = Application.InputBox("Select the range of data to group", "KutoolsforExcel", Type:=8)
    
    GroupCount = Application.InputBox("Enter the number of groups:", "KutoolsforExcel", 3, Type:=1)
    
    If rng Is Nothing Or GroupCount <= 0 Then Exit Sub
    
    arr = rng.Value
    totalRows = UBound(arr, 1)
    GroupSize = Int(totalRows / GroupCount)
    remaining = totalRows - GroupSize * GroupCount
    
    ReDim groupArr(1 To totalRows)
    Dim used() As Boolean
    ReDim used(1 To totalRows)
    
    Randomize
    
    For i = 1 To totalRows
        Do
            idx = Int(Rnd() * totalRows) + 1
        Loop While used(idx)
        
        used(idx) = True
        groupArr(i) = idx
    Next i
    
    For i = 1 To totalRows
        grpNum = Int((i - 1) / GroupSize) + 1
        If grpNum > GroupCount Then grpNum = GroupCount
        rng.Cells(groupArr(i), 1).Offset(0, 1).Value = "Group " & grpNum
    Next i
    
    MsgBox "Groups assigned randomly and as evenly as possible.", vbInformation
End Sub

2.次に、実行ボタンボタンをクリックしてコードを実行します。データ範囲(名前や ID が含まれる列など)の選択を求められ、その後、生成したいグループ数を入力します。すると、VBA が各データ行をいずれかのグループに割り当て、そのグループ番号を直後の列に出力します。

  • 重複入力防止のための割り当て:各メンバーは1 つのグループにのみ所属します。
  • バランスの取れたグループ:できるだけ均等に割り当てます。データを完全に均等に分割できない場合は、最後のグループ(またはグループ群)のメンバー数が1 人多くなるか、または少なくなることがあります。
  • カスタマイズ:VBA コードを調整すれば、出力テキストや開始列を自由に変更したり、さらに割り当てルールを追加したりすることも可能です。

注意点:VBA はワークシートのデータを直接変更するため、実行前に必ずバックアップを保存してください。予期しないエラー(想定より多くの列が選択されてしまうなど)が発生した場合は、選択範囲とグループ数の入力を再度ご確認ください。

トラブルシューティング:開発タブが表示されていない場合は、ファイル > オプション > リボンのユーザー設定 > 開発をオンにしてください。エラーが発生した場合は、マクロ設定が有効になっているかご確認ください(ファイル > オプション > トラストセンター)。

ユースケースの利点:VBA は、厳密な制御や大規模データセットの処理、繰り返しタスクの自動化を必要とする上級ユーザーに最適です。ただし、マクロの有効化やコードの記述・修正が必要なため、素早く簡単に実行したい基本的なタスクにはあまり向いていません。


サンプルファイルをダウンロード

サンプルファイルをダウンロードするにはここをクリック


その他の人気記事


最高の Office 業務効率化ツール

🤖KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行     コード生成  カスタム数式作成    データ分析とチャート生成  拡張機能呼び出し
人気の機能検索・ハイライト、または重複をマーキング     空白行を削除する     データを失うことなく列の結合またはセルを     数式を使用しない四捨五入...
スーパー LOOKUP複数条件 VLookup    複数値 VLookup     複数シート間 VLookup      ファジーマッチ....
高度なドロップダウンリストドロップダウンリストをすばやく作成     連動型ドロップダウンリスト     複数選択可能なドロップダウンリスト....
列マネージャー指定した数の列を追加列の移動非表示列の表示状態を切り替え範囲および列の比較...
注目の機能グリッドフォーカス     デザインビュー   強化された数式バー    ワークブックとシートマネージャー     リソースライブラリ(オートテキスト)  日付ピッカー     ワークシートの統合    暗号化/セルの復号化    リストからメール送信     スーパーフィルター      特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。
トップ15 ツールセット12 テキストツールテキストの追加特定の文字を削除、...)   50+チャートタイプガントチャート、...)   40+実用的関数誕生日に基づいて年齢を計算します、...)   19 挿入ツールQR コードを挿入パスから画像を挿入、...)   12 変換ツール単語に変換する為替レートの変換、...)   7 結合と分割ツール高度な行のマージセルの分割、...)さらに多数
Kutools はお好みの言語でご利用いただけます。英語、スペイン語、ドイツ語、フランス語、中国語、および40+の他の言語をサポートしています!

Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。


Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします

  • Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
  • 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
  • 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!

すべてのKutools アドインが、たった1 つのインストーラーで完結。

Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。

ExcelWordOutlookTabsPowerPoint
  • オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
  • インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
  • 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
  • 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
  • 最高のお得感— 個別アドイン購入よりお得