Expert guide

Landscaping Route Scheduling in Excel

Recurring visits, sensible routes for every crew, rain days handled, and the properties that really make money

Short answer: keep a property table with service type, frequency (weekly, fortnightly, monthly), preferred day, zone, estimated minutes and price. Generate each week's visits from the frequency, assign them to crews by day and zone, sort each crew's stops, and print or share the day sheet. Log actual minutes and skips, move rain-day visits forward, and compare price with crew cost per property. Built properly, this is a custom Excel workbook the office runs in minutes each week.

Lawn care and landscape maintenance businesses earn their margin on density and consistency: many properties close together, serviced on schedule, by crews that are not criss-crossing town. Scheduling on a whiteboard works for one crew. With three crews, 150 properties on mixed frequencies and a wet spring, it falls apart. A structured schedule in Excel keeps it under control without paying for software you are not ready for.

The Property Table

ColumnExampleUse
PropertyID, Customer, AddressP-114, Hill Dental, 22 Oak AveIdentification
ZoneNorth-2Groups nearby stops
ServiceMow + trimDefines crew and time
FrequencyWeekly / Fortnightly / MonthlyVisit generation
PreferredDayTueCustomer expectation
FirstVisit2027-04-06Anchors fortnightly cycles
EstMinutes35Capacity planning
PricePerVisit$58Profitability
SeasonStart, SeasonEndApr 1, Oct 31Active period

Generating the Week's Visits

Due this week? (week start Monday in Settings!WeekStart):
=LET(ws, Settings!WeekStart,
     inSeason, AND(ws + 6 >= [@SeasonStart], ws <= [@SeasonEnd]),
     weeksSince, INT((ws - ([@FirstVisit] - WEEKDAY([@FirstVisit], 2) + 1)) / 7),
     due, SWITCH([@Frequency],
          "Weekly", TRUE,
          "Fortnightly", MOD(weeksSince, 2) = 0,
          "Monthly", DAY(ws) <= 7,
          FALSE),
     AND(inSeason, weeksSince >= 0, due))

Planned date this week:
=Settings!WeekStart + MATCH([@PreferredDay], {"Mon","Tue","Wed","Thu","Fri","Sat"}, 0) - 1

The Monthly rule shown schedules the visit in the week whose Monday falls on the 1st to 7th of the month; adapt it to your own pattern, such as "every fourth week". Copy the due properties into a Visits table for the week (a FILTER on Due this week does it), so changes to the schedule do not alter the property master.

Crew Assignment and Capacity

Planned minutes per crew per day:
=SUMIFS(tblVisits[EstMinutes], tblVisits[Crew], B$1, tblVisits[PlannedDate], $A2)
 + COUNTIFS(tblVisits[Crew], B$1, tblVisits[PlannedDate], $A2) * Settings!AvgDriveMins

Capacity check:
=IF(B2 > Settings!CrewDayMinutes, "Over by " & B2 - Settings!CrewDayMinutes & " min", "OK")

Assign crews by zone first: each crew owns certain zones on certain days. Only properties that do not fit get moved, which keeps routes dense and customers seeing the same crew.

The Crew Day Sheet

=SORTBY(FILTER(tblVisits[[StopOrder]:[Notes]],
        (tblVisits[Crew] = B1) * (tblVisits[PlannedDate] = B2)),
        FILTER(tblVisits[StopOrder], (tblVisits[Crew] = B1) * (tblVisits[PlannedDate] = B2)), 1)
  • Columns: stop order, customer, address, service, gate code or access notes, estimated minutes.

  • Print, PDF, or share to a phone; a column for actual start and finish to fill in.

  • Stop order set within each zone, ideally from a routing tool's suggested sequence.

Rain Days and Reschedules

  • Mark the day's visits as Weather in a Status column.

  • A helper moves them to the same crew's next day with spare capacity, or to Saturday.

  • Visits skipped twice in a row get flagged for a call to the customer.

  • Billing rules decide whether skipped visits are billed, credited or made up.

Route Optimisation

Zones and sensible ordering remove most waste. To go further, send each crew's addresses to a routing or mapping API that returns an optimised order and drive times, then write the stop order back to the visits table. That is a typical Excel API integration; the basic pattern for calling a web API from VBA is shown in calling an API from Excel VBA.

Which Properties Make Money?

Per property, season to date:
Visits done:    =COUNTIFS(tblVisits[PropertyID], [@PropertyID], tblVisits[Status], "Done")
Revenue:        =[@[Visits done]] * [@PricePerVisit]
Crew minutes:   =SUMIFS(tblVisits[ActualMinutes], tblVisits[PropertyID], [@PropertyID])
                + [@[Visits done]] * Settings!AvgDriveMins
Crew cost:      =[@[Crew minutes]] / 60 * Settings!CrewCostPerHour
Margin:         =[@Revenue] - [@[Crew cost]]
Margin %:       =IF([@Revenue] = 0, "", [@Margin] / [@Revenue])

Sort by margin %. The bottom of the list usually contains properties that take much longer than estimated or sit far outside the crew's zones. Those are candidates for a price increase at renewal.

Where AI Helps the Office

  • Turning crew notes ('back gate broken, dog loose, irrigation leaking zone 3') into customer messages and upsell leads.

  • Drafting seasonal renewal letters with each customer's service history.

  • Summarising the week: skipped visits, over-capacity days, properties running long.

For one-off jobs, quotes and invoicing alongside recurring work, see the work order management database, and for cleaning and other recurring service businesses, the cleaning business scheduling guide.

FAQ

Landscaping scheduling FAQ

Routes, crews, weather and pricing

List every property with its service frequency, preferred day, estimated time on site and area or zone. Generate the visits for each week from the frequency, assign them to crews by day and zone, and sort each crew's list by a stop order. Track actual time and completion to improve estimates.

Excel can group stops by zone and sort them sensibly, which removes most wasted driving. True route optimisation that minimises distance needs mapping data: a routing service or add-in can calculate drive times between addresses and order stops, with results brought back into the schedule.

Mark the day as weather-cancelled, then move its visits to the next available day for the same crew, or split them across crews with spare capacity. Recording skips and reschedules lets you see whether a property missed its service and whether it should be billed.

Compare the price per visit with actual crew time on site plus drive time, multiplied by crew cost per hour. Properties that consistently take longer than estimated, or sit far from the rest of the route, are often underpriced.

When crews need a mobile app to clock in at each property, customers need online billing and booking, or the office manages many crews across a large area. A structured spreadsheet is often the best step before software, because it clarifies the data you will need.