Free Preventive Maintenance Schedule Template (Excel)
Preventive maintenance lives or dies by one thing: whether the schedule is visible, current, and actually used.
Most teams start with a calendar. Then a spreadsheet. Then a spreadsheet that nobody updates because the person who built it left. I've seen this at facilities managing 20 assets and plants running 2,000. The failure mode is always the same.
This template is built to avoid that failure mode. It's the PM schedule structure I've used and recommended across ten years of managing maintenance systems — straightforward, low-friction, and built so anyone on your team can pick it up without a training session.
Download the Template
Enter your email to download the free Excel PM schedule. We'll also send a copy via email.
Free download. No spam. Unsubscribe anytime.
What Goes in a PM Schedule
Before building anything, be clear on what the schedule needs to do. It has one job: make sure the right task happens to the right asset at the right time, and that someone can confirm it did.
That means four fields are non-negotiable:
- Asset ID — what's being maintained (links to your asset register)
- Task — what specifically needs doing
- Frequency — how often (daily, weekly, monthly, quarterly, annual)
- Last Completed / Next Due — the two dates that drive the whole system
Everything else is optional. Add it if you'll use it; leave it out if you won't.
Building the Schedule in Excel
Core structure
| Column | What it's for |
|---|---|
| Asset ID | Short identifier — matches your asset register |
| Asset Name | Human-readable name for scanning |
| Location | Where the asset lives |
| Task | Specific, actionable description |
| Frequency | Daily / Weekly / Monthly / Quarterly / Annual |
| Last Completed | Date the task was last done |
| Next Due | Calculated — see formula below |
| Assigned To | Who owns this task |
| Status | Open / Complete / Overdue |
The Next Due formula
This is the one formula that makes the whole thing work. In the Next Due column:
=IFERROR(
IF(E2="Daily", D2+1,
IF(E2="Weekly", D2+7,
IF(E2="Monthly", D2+30,
IF(E2="Quarterly", D2+91,
IF(E2="Annual", D2+365, "")
)))), ""
)
Replace E2 with your Frequency column, D2 with your Last Completed column. Drag down the column. Update Last Completed when a task is done — Next Due recalculates automatically.
Conditional formatting: make the urgent visible
Add two rules to the Next Due column:
Overdue (red): Format → Conditional Formatting → New Rule → Formula: =AND(F2<TODAY(), F2<>"") → Red fill
Due within 7 days (amber): Formula: =AND(F2>=TODAY(), F2<=TODAY()+7) → Amber fill
Now you have a live dashboard. Open the sheet Monday morning and everything that needs attention is already flagged.
Data validation for consistency
Use dropdown lists for Frequency and Status. Without this, you'll have "monthly", "Monthly", "mo.", and "1/month" in the same column within a week, and your filters will break.
Select the Frequency column → Data → Data Validation → List → Daily,Weekly,Monthly,Quarterly,Annual
Same for Status: Open,Complete,Overdue,Skipped
Making It Work in Practice
Assign an owner per task, not per team. "Facilities team" means nobody. "Tom Jones" means Tom Jones.
Update Last Completed the day it happens. Not the day after. Not at the end of the week. Same day. One skipped update and you've lost the audit trail.
Review overdue items weekly. Schedule a 15-minute Monday review. Filter for red rows. Assign, chase, close. Without this ritual, the schedule becomes decoration.
Don't add tasks you're not going to do. A PM schedule that's 30% aspirational is a PM schedule that gets ignored. Start with the tasks you actually run today. Add more as you build the habit.
Where Excel PM Schedules Break Down
The formula above works. I've seen teams run it for years. But there are specific points where it stops being good enough.
No notifications. Excel doesn't ping anyone when a task comes due. You have to remember to open the file and check. If the person who checks it is on leave, nothing gets flagged until they're back.
Multi-site operations. One spreadsheet per site is manageable. Three spreadsheets is annoying. Ten is a mess. You can't roll up PM compliance across sites without building your own pivot table, every time, manually.
Audit evidence. If an auditor asks "show me proof that this PM was completed on this date by this person," a cell in a spreadsheet is weak evidence. Anyone could have typed that. A timestamped record with a logged-in user attached is what auditors actually want.
Contractor and third-party tasks. Your schedule will have tasks owned by external contractors — annual inspections, statutory checks, specialist servicing. Tracking these in the same spreadsheet as internal tasks gets complicated fast.
None of these are reasons to avoid starting with Excel. They're things to watch for so you know when it's time to move.
Signs You've Outgrown the PM Spreadsheet
- Tasks are slipping because nobody saw them coming until they were already overdue
- You're spending more time maintaining the schedule than running the maintenance
- Your technicians won't open the file on their phones
- You've had a version conflict — two copies of the schedule that don't match
- An auditor asked for PM completion evidence and you had to scramble
If three of those are true, read this: 5 Signs You've Outgrown Spreadsheet Asset Management
Related Templates
If you're building out a full Excel CMMS, these fit alongside this PM schedule:
- Full CMMS Excel Template — the complete four-sheet system (asset register, work orders, PM schedule, maintenance log)
- Work Order Tracking Template — manage reactive work alongside your PMs
- Maintenance Log Template — build the audit trail as tasks get completed
When the schedule needs to notify people
AssetOS sends PM reminders automatically, logs completion against the asset record, and gives you a compliance dashboard across every site — without a spreadsheet.
Shane Price
Writing about maintenance management, CMMS implementation, and the real challenges operations teams face.