How to Create Balanced and Diverse Groups in Excel Using a VBA Macro
Question details
The user needs to divide a list of over 200 people from 30 departments into 20 similarly sized groups, ensuring maximum departmental diversity.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Organizing teams or groups from a large corporate dataset while enforcing strict constraints on the number of people from the same department in any single group.
- Observed behavior
- The goal is to automatically distribute individuals into 20 groups of approximately 12-13 members with no more than two people from the same department per group.
Create a copy of your dataset and replace sensitive employee names with fictional dummy data to safely test your VBA macro logic before applying it to your real workbook.
Use a VBA Macro for Conditional Group Distribution
Because standard formulas cannot easily handle complex multi-condition looping (like checking department caps before assigning a group), a VBA macro is the most practical solution.
A custom VBA script can iterate through your list of names and assign group numbers based on your rules. The macro can keep a running count of how many people from a specific department have been added to a group and move to the next available group once the limit of two is reached.
Right-click anywhere on the Excel ribbon, select 'Customize the Ribbon', and check the box next to 'Developer' in the right pane to enable macro tools.
Click the Developer tab and select 'Visual Basic' (or press Alt + F11). Go to Insert > Module to create a blank workspace for your script.
Input a VBA script designed to loop through your rows. The script should use variables to define the maximum group size (13) and maximum department overlap (2), assigning a random or sequential group number (1 to 20) in an adjacent column if the conditions are met.
Close the VBA editor, return to your dummy data sheet, and click 'Macros' on the Developer tab. Select your script and click 'Run'. Review the assigned groups using Excel's filtering tools to ensure no department exceeds two members per group.

Use WPS Spreadsheet to Run VBA Macros and Organize Teams
WPS Spreadsheet provides powerful support for VBA macros, allowing you to automate complex tasks like departmental group distribution without needing a heavy or expensive software subscription.
- 1. Open your dataset in WPS: Launch WPS Spreadsheet and open your employee roster file.
- 2. Access the VBA Editor: Navigate to the Developer tab on the ribbon and click on the 'VBA Editor' icon.
- 3. Run your grouping script: Insert a new module, paste your custom grouping code, and press 'Run' to populate the group assignments.
- 4. Save as XLSM: Go to Menu > Save As, and choose 'Excel Macro-Enabled Workbook (*.xlsm)' to ensure your VBA code is preserved for future use.

Frequently Asked Questions
Can I group diverse teams using standard Excel formulas instead of VBA?
While you can use formulas like RAND() and SORT() to shuffle a list and divide it evenly, standard formulas cannot dynamically evaluate complex constraints (like stopping a department from exceeding two members in a specific group). For dynamic, conditional limits, VBA is highly recommended.
How do I save a workbook that contains a VBA macro?
You must save the file as a Macro-Enabled Workbook. Go to File > Save As, and in the 'Save as type' dropdown, select 'Excel Macro-Enabled Workbook (*.xlsm)'. If you save it as a standard .xlsx file, the macro code will be deleted.
How do I check if my generated groups are actually balanced?
After running your macro, you can insert a PivotTable. Drag the 'Group Number' field to the Rows area and the 'Department' field to both the Columns and Values areas. This will create a matrix showing exactly how many people from each department are in each group, confirming your limits were respected.




