How to Create a Weekly Employee Shift Rota in Excel
Question details
The user wants to create a dynamic weekly shift schedule that organizes dates across columns and shift types in rows, displaying 13 weeks of data with a quick toggle to switch between individual employees.

- Product
- Microsoft Excel
- Device & OS
- not provided
- Scenario
- Managing staff schedules and generating specific weekly shift reports for individual employees.
- Observed behavior
- Requires a structured report showing Monday through Sunday as column headers, Weeks 1 to 13 as row labels, and a functional control to easily filter or switch the displayed data by employee.
Gather all your shift data, including employee names, specific dates, and shift types (e.g., day, night, off), and ensure they are organized in a standard tabular format before building your dynamic report.
Build a Dynamic Rota Using Data Validation and Lookup Formulas
This method uses a drop-down list to select an employee and lookup formulas to automatically populate text-based shift types (like 'Day' or 'Night') into the 13-week grid.
Standard Pivot Tables are designed to aggregate numbers. Because shift types are text values, using a combination of Data Validation drop-downs and advanced lookup formulas (like FILTER or XLOOKUP) is the most effective way to display text in a matrix layout.
Create a master sheet with columns for 'Date', 'Week Number', 'Day of Week', 'Employee Name', and 'Shift Type'. Fill this with your 13-week schedule data.
On a new worksheet, type 'Monday' through 'Sunday' in columns B through H. Type 'Week 1' through 'Week 13' down column A starting from row 2.
Select a cell above your grid (e.g., B1). Go to the 'Data' tab on the ribbon, click 'Data Validation', choose 'List' under the Allow criteria, and type or select your employee names.
In cell B2 (Week 1, Monday), enter a formula like =FILTER(ShiftRange, (EmployeeRange=$B$1)*(WeekRange=$A2)*(DayRange=B$1), "Off"). Drag this formula across and down to fill your 13-week matrix. When you change the drop-down in B1, the schedule will update automatically.

Create an Employee Rota Using Pivot Tables and Slicers
Ideal if you want a quick visual overview of all employees at once and prefer to use Slicers as an interactive menu to filter the schedule.
Easily Manage Staff Schedules with WPS Spreadsheet
WPS Spreadsheet provides powerful data validation tools, advanced array formulas, and rich conditional formatting to help you build dynamic, professional employee rotas quickly and easily.
- 1. Open a Blank Workbook or Template: Launch WPS Spreadsheet and start a new blank document, or search for a 'Rota' template in the template library.
- 2. Input Your Shift Data: Enter your shift logs into a structured table containing the Date, Week, Employee Name, and Shift Type.
- 3. Apply Data Validation: Go to Data > Validation to create your interactive employee drop-down menu for quick toggling.
- 4. Use Lookup Functions: Apply lookup or filtering formulas in your 13-week grid to automatically pull in the correct shift details based on the selected employee.

Frequently Asked Questions
How do I automatically calculate the week number from a date?
You can use the =ISOWEEKNUM(A2) or =WEEKNUM(A2) formula, where A2 is your date cell. This will automatically generate the correct week number for your 13-week view.
How can I highlight different shift types with specific colors?
Select your entire 13-week grid, navigate to Home > Conditional Formatting > Highlight Cells Rules > Equal To. Enter 'Day' and choose a color. Repeat the process for 'Night' and 'Off'.
Why are my text shift types not showing up in the Pivot Table values?
Standard Pivot Tables only aggregate numerical data (like Sum or Count) in the Values area. To display text (like 'Day' or 'Night'), you must either use Power Pivot with DAX measures or use a formula-based approach instead of a Pivot Table.
How do I prevent double-booking an employee on the same day?
You can prevent duplicates during data entry by using Data Validation. Select your input column, choose Custom, and enter a =COUNTIFS() formula that restricts entering the same employee name on the same date more than once.




