Download a ready-made monthly shift roster that adds up hours, catches too little rest between shifts and shows where you are short-staffed. Then see when a spreadsheet is no longer enough for scheduling.
✓ No sign-up, no email · ✓ No macros · ✓ Excel 2010 or newer
Updated 26 October 2026
How do you make a shift schedule in Excel? Put employees in rows and the days of the month in columns, then type a shift code in each cell – for example M, A or N. A shift table gives every code its times and hours, COUNTIF counts how many people work each shift, and one formula compares the end of one shift with the start of the next so nobody gets too little rest.
The first two weeks of the "Example" sheet: a small restaurant with a morning and an afternoon shift. Colours, totals and red warnings all come from formulas.
| Employee | 1 Tue |
2 Wed |
3 Thu |
4 Fri |
5 Sat |
6 Sun |
7 Mon |
8 Tue |
9 Wed |
10 Thu |
11 Fri |
12 Sat |
13 Sun |
14 Mon |
Hours | Short rest |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Jane | O | M | M | M | M | M | O | O | M | M | M | M | M | O | 75.0 | - |
| Peter | O | O | A | A | A | A | A | O | O | A | M | A | A | A | 75.0 | 1 |
| Lucy | M | O | O | M | M | M | M | M | O | O | M | M | M | M | 75.0 | - |
| Mark | A | A | O | O | A | A | A | A | A | O | O | A | A | A | 75.0 | - |
| Eve | M | M | M | O | O | M | M | M | M | M | O | O | M | M | 75.0 | - |
| Tom | A | A | A | A | O | O | A | A | A | A | A | O | O | A | 75.0 | - |
| Coverage M | 2 | 2 | 2 | 2 | 2 | 3 | 2 | 2 | 2 | 2 | 3 | 2 | 3 | 2 | min. 2 | |
| Coverage A | 2 | 2 | 2 | 2 | 2 | 2 | 3 | 2 | 2 | 2 | 1 | 2 | 2 | 3 | min. 2 | |
Define your shifts (morning, afternoon, night, day) and absences once on the Settings sheet. In the roster you only pick a code from the drop-down.
A cell turns red when the gap between the end of one shift and the start of the next is under 11 hours (the EU Working Time Directive minimum). Change the limit to match your rules.
Below the roster you see how many people work each shift every day. Below the minimum you set, the number turns red.
On the right: scheduled hours, the monthly target from contract hours and your public holidays, the difference, number of shifts and weekend or holiday work.
A 22:00–06:00 shift is counted correctly – in the hours and in the rest check into the next day.
Up to 15 people and 31 days in one grid, weekends and holidays shaded. Ready to print landscape on one page.
One file, no macros and no email address required. It includes instructions, shift and holiday settings, a blank monthly roster and a filled-in restaurant example.
Use and adapt the template freely. Need to track hours actually worked too? Get our Excel timesheet template.
On the Settings sheet, enter the year, month and contract hours. Edit the shift times and the minimum staff for each shift, and add your public holidays.
Type the names in column A of the Shift schedule sheet. There is room for 15 people.
Pick a shift code for each day. For a repeating week, copy seven cells and paste them further along.
Check short rest, coverage and hours against the target. Then print the roster or save it as PDF and share it with your team in good time.
The first roster is quick. The time goes on what follows: requests, swaps, sick calls, a new version and sending it round again. The breakdown below is for a 10-person restaurant team on shifts.
A spreadsheet roster looks finished even when it is wrong. These are the mistakes we see most often – and how to handle them.
| Mistake | What happens in Excel | How the template / Fresh QR handles it |
|---|---|---|
| Too little rest | An afternoon shift until 22:00 next to a morning shift from 06:00. Nobody notices in the grid until someone complains. | The template turns that cell red. Fresh QR does not check this yet – here the template is ahead of us. |
| A coverage gap | Someone is on vacation and the morning shift is suddenly down to one person. You find out at 6 a.m. | The template counts people on every shift. Fresh QR shows the number of gaps per day based on your coverage requirements. |
| An old version of the rota | Half the team has a photo of yesterday's version and turns up for the wrong shift. | The template cannot fix this. In Fresh QR there is one published schedule and everyone sees it in the app. |
| Swaps by phone | Colleagues trade shifts between themselves, you do not know, and the rota no longer matches attendance. | In Fresh QR an employee offers a shift to a colleague in the same position, who takes it – the schedule updates itself. |
| Hours off target | One person ends up 20 hours over, another under. It shows up at payroll. | The template compares scheduled hours with the target. Fresh QR shows planned hours per employee for the week. |
| Plan and reality in two files | The rota is one spreadsheet, attendance another. Someone works out overtime against the plan by hand. | In Fresh QR the published schedule is the plan for attendance, and the day detail shows the plan next to the actual scans. |
A well-built Excel template compared with shift planning in Fresh QR, where every employee sees the schedule in the free app.
| Excel (this template) | Fresh QR | |
|---|---|---|
| Where staff see the rota | Paper on the wall, a PDF or a photo in the group chat | In the Fresh QR app on their phone – this week and next |
| Changes after publishing | A new file version, sent round again | Editing creates a draft; staff see it once you publish |
| Requests and swaps | Messages and calls, you retype them | "Want to work / prefer not to" requests and shift swaps right in the app |
| Coverage | COUNTIF in the template | Coverage requirements and the number of gaps per day |
| Rest between shifts | The template checks it | Not checked yet |
| Leave and sick days | Typed into cells by hand | Approved and pending absences appear in the grid |
| Plan vs attendance | Two separate spreadsheets | Published shifts are the plan for attendance and overtime |
| View | The whole month on one sheet | Week view, planned on a computer |
| Cost | €0 for software; you pay in time and energy | Optional module on top of attendance, price shown in the app |
Shift planning in Fresh QR is a young module, and a few things Excel still does better. Here are both sides.
If you have a small team with fixed shifts that rarely change, and the rota hangs on the wall, Excel with this template is enough. An app pays off when you rework the schedule every week, people swap shifts among themselves, or you need the plan and attendance to match without comparing them by hand.
Rotating shifts, 12-hour shifts or split shifts? Copy this prompt into ChatGPT, Claude or Copilot in Excel and edit the square brackets. It tells the AI to put formulas in the cells, so changing a shift updates the hours and checks by itself.
Create an .xlsx file for a monthly employee shift schedule (rota). Details: - Country: [United Kingdom] - Number of employees: [12] - Shifts: [M morning 06:00–14:00, A afternoon 14:00–22:00, N night 22:00–06:00], each with a 30-minute break - Minimum staff: [M 3, A 3, N 1] - Absences: O (day off), V (vacation, 8 h), S (sick, 0 h) - Contract: [8] hours per day Sheets: 1. "Settings": year, month, contract hours, minimum rest between shifts of [11] hours, a shift table (code, name, start, end, break, hours, minimum staff) and a list of public holidays for [England] in the chosen year. Create named ranges. 2. "Rota": rows = employees, columns = days 1 to 31. Each cell has a drop-down of shift codes. Header with the date and weekday; weekends and public holidays highlighted. 3. On the right for each person: scheduled hours (SUMPRODUCT and COUNTIF against the shift table), target hours, difference, number of shifts, weekend shifts and the number of shifts with too little rest. [Add a weekly total and flag weeks over 48 hours.] 4. Below the rota: coverage of each shift for every day, highlighting days below the minimum. Rules: - Rest = start of the shift on day d+1 minus the end of the shift on day d; a night shift ends on the next day. If rest is below the minimum, colour the cell red. - Shift hours = end − start − break; shifts across midnight must be calculated correctly (MOD). - Colour cells by shift code with conditional formatting. Technical requirements: - Formulas everywhere, not calculated values. No macros. - Don't use XLOOKUP, FILTER or LET, so the file works in older Excel versions. - Put helper calculations in hidden columns. - Finally, add a "How to use" sheet. Before building the file, summarise your plan in 5 bullet points and ask me if anything is unclear.
SUMPRODUCT(COUNTIF(row,codes)*hours) and coverage from COUNTIF(column,"M"). Our template has all of this ready. (1 + start_today − end_yesterday) × 24. If yesterday's shift crossed midnight, add one day to its end. Highlight anything under your minimum (11 hours under the EU Working Time Directive) with conditional formatting. The template does this in hidden columns. See also shift planning linked to attendance, our free Excel timesheet template and the restaurant time clock.
Keep the template for as long as it works for you. When you start reworking the rota every week, try Fresh QR: the schedule on every employee's phone, shift swaps in the app and a plan that matches attendance from day one.
The template and this page are not legal advice. Working-time rules differ by country; sources cited as of October 2026. Microsoft Excel is a trademark of Microsoft Corporation; Fresh QR is not affiliated with Microsoft.