How to Create a Dynamic Excel Schedule Grouped by Event
Question details
The user needs to transform a schedule containing dates, times, events, and participants into a report grouped by event, with participants displayed in separate columns.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Organizing and restructuring schedule data for better readability and event management.
- Observed behavior
- The data needs to be reshaped from a cross-tabular schedule into a structured dynamic report grouped by event, with participants in individual columns.
Ensure you are using a modern version of your spreadsheet software (like Microsoft 365 or the latest WPS Office) that supports dynamic array functions such as LET, REDUCE, and LAMBDA.
Use a Dynamic Array Formula with LET
This is the most robust method to dynamically reshape the schedule data, extract unique events, and distribute participants into columns.
The LET function allows you to assign names to intermediate calculation results within a formula. This makes handling complex data transformations, like flattening matrices and grouping records, much faster and easier to manage.
Determine the exact range of your schedule data, including headers, dates, times, and participant rows (e.g., A3:I10).
Select the top-left cell where you want the new report to start and enter the comprehensive formula: =LET(input,A3:I10,dates,DROP(TAKE(input,1),,1),times,DROP(CHOOSEROWS(input,2),,1),events,DROP(input,2,1),test,events<>"",names,TOCOL(IFS(test,TAKE(DROP(input,2),,1)),2),keyId,TOCOL(IFS(test,events&"|"&dates+times),2),ids,SORT(UNIQUE(keyId)),recordCount,MAP(ids,LAMBDA(id,SUM(--(id=keyId)))),maxCount,MAX(recordCount),newRows,maxCount-recordCount,cols,SEQUENCE(,maxCount),pad_ids,TOCOL(IFS(newRows>=cols,ids),2),resize,WRAPROWS(SORTBY(EXPAND(names,ROWS(keyId)+ROWS(pad_ids),,""),VSTACK(keyId,pad_ids)),maxCount),output,HSTACK(TEXTBEFORE(ids,"|"),INT(TEXTAFTER(ids,"|")),MOD(TEXTAFTER(ids,"|"),1),resize),headers,HSTACK("Event","Date","Time","Participant "&cols),VSTACK(headers,output)).
Change the 'A3:I10' reference in the formula to match the actual range of your source schedule data.

Use REDUCE and LAMBDA for Simple Grouping
A simpler alternative formula if you only need to group participants by a single column, such as Event Name.
Use Power Query to Unpivot and Pivot Data
Ideal for users who prefer a visual interface without complex formulas, and compatible with older software versions.
Group and Manage Schedules Easily with WPS Spreadsheet
WPS Spreadsheet fully supports advanced array functions and dynamic tools to help you transform complex schedules into organized reports effortlessly.
- 1. Open your schedule in WPS Spreadsheet: Launch WPS Office and open the workbook containing your raw schedule data.
- 2. Select the output cell: Click on the empty cell where you want the top-left corner of your new grouped report to appear.
- 3. Apply the dynamic array formula: Paste the LET or REDUCE formula into the formula bar and adjust the range references to match your data.
- 4. Press Enter to spill data: Hit Enter, and the WPS Spreadsheet engine will automatically calculate and spill the grouped results into the adjacent cells.

Frequently Asked Questions
Why is my dynamic array formula returning a #SPILL! error?
A #SPILL! error occurs when the output range required by the dynamic formula is blocked by existing data, text, or formatting. Clear the cells around and below the formula to allow the data to expand.
Do these dynamic array functions work in older versions of Excel?
Functions like LET, UNIQUE, and REDUCE are only available in Microsoft 365, Excel 2021, and modern spreadsheet tools like WPS Office. For older versions, consider using the Power Query method instead.
Can I use Power Query to group participants instead of formulas?
Yes, Power Query is highly effective for restructuring data. You can unpivot the participant data and then group by the event. Keep in mind that you will need to click 'Refresh' on the data table whenever the source schedule changes.




