Cellwise Try it free

Excel for your field

Excel for cleaning and home-service businesses

For owners of house cleaning, janitorial and other home-service businesses who quote fast and want every job to pay. Excel prices a clean from square footage with a discount for recurring visits, shows the profit on each job once drive time and supplies are counted, adds up recurring monthly revenue, and tells you how many cleaner hours your regular clients need each week. Every formula below runs on the client list of a small cleaning company you can edit.

Sample data

Every result on this page comes from this sheet, calculated by the same engine the Cellwise app uses. Change a number and watch the formulas react.

ABCDEFGH
1ClientSq ftFrequencyPriceHoursSuppliesSettings
2Priya2400Weekly2303.56.5Cleaner cost per hour24.5
3Marcus1800Biweekly18535.8Base price per sq ft0.11
4Elena3200Biweekly29058.2Minimum visit price140
5Tom1500Monthly1652.55.1Discount by frequency
6Grace2800Weekly25547.4Weekly0.2
7Office suite 2B4200Weekly3405.511.3Biweekly0.15
8Hana2100Biweekly2053.56.1Monthly0.1
9Leo1200Monthly14024.4One-time0
10Rosa2600Biweekly24046.9Drive time per visit (hrs)0.5
11Move-out, Birch Ln1900One-time420814.6

What Excel does for cleaning services

Quote a clean from square footage and frequency

Square footage times your base rate gives a starting price. Recurring clients usually get a discount, because the home stays cleaner between visits and you save on selling. XLOOKUP finds the discount for the client's frequency in the table, and MAX keeps the quote from going under your minimum.

Round to the nearest $5 so quotes look deliberate. Dividing by 5, rounding, then multiplying by 5 does that.

=MAX(H4,ROUND(B2*H3*(1-XLOOKUP(C2,G6:G9,H6:H9))/5,0)*5)

Result: 210

$210 for Priya's 2,400 sq ft weekly clean: $264 at $0.11 a foot, less the 20% weekly discount is $211.20, rounded to $210. She pays $230 today, so her price is in line.

Work out the profit on each job

Profit per job is the price minus the cleaner's time and the supplies. The gotcha is drive time: you pay cleaners to get between homes, but nobody pays you for it. Add the drive time per visit to the hours on site before you multiply by your cleaner cost.

Use your full cleaner cost per hour, including the payroll costs you pay on top of wages, so the profit is real.

=D2-(E2+H10)*H2-F2

Result: 125.5

$125.50 profit on Priya's visit: $230, minus 4 paid hours (3.5 cleaning plus 0.5 driving) at $24.50, minus $6.50 of supplies.

Find the client who pays least per hour

Price per visit alone hides slow jobs. Divide each client's price by the paid hours the visit really takes (cleaning plus drive time) and the lowest one is the job to re-quote or re-route first.

The array inside MIN and MATCH works the rate out for every client at once, so you do not need a helper column.

=INDEX(A2:A11,MATCH(MIN(D2:D11/(E2:E11+H10)),D2:D11/(E2:E11+H10),0))

Result: Move-out, Birch Ln

The move-out: $420 over 8.5 paid hours is $49.41 an hour, the lowest on the list even though it is the most profit on any single visit. Elena is next at $52.73 for 5.5 paid hours.

Add up recurring monthly revenue

Weekly is 52 visits a year, not 4 a month, and biweekly is 26, not 2. Multiply each price by its visits per year, add them up and divide by 12 for an honest monthly figure. One-time jobs get 0 visits, so they stay out of recurring revenue.

The comparisons inside SUMPRODUCT turn into 1 or 0, which picks the right number of visits for each row.

=SUMPRODUCT(D2:D11*((C2:C11="Weekly")*52+(C2:C11="Biweekly")*26+(C2:C11="Monthly")*12))/12

Result: 5873.3333333

$5,873.33 a month from the nine recurring clients, $70,480 a year. Counting weekly as 4 visits a month and biweekly as 2 would understate it by $428.33.

See how many cleaner hours your regulars need each week

Before you take on a new client, check whether your team has the hours. Visits per year times paid hours per visit (cleaning plus drive), divided by 52, is the average week of work the recurring list needs.

Biweekly and monthly clients do not land evenly, so some weeks run heavier. Use this as the average and look at the real calendar for the peaks.

=SUMPRODUCT((E2:E11+H10)*((C2:C11="Weekly")*52+(C2:C11="Biweekly")*26+(C2:C11="Monthly")*12))/52

Result: 24.519230769 shows as 24.5 with Number format

24.5 paid hours a week on average for the recurring clients, before any one-time jobs: more than half of one full-time cleaner's week.

Check what supplies cost per job

Supplies are small per visit, so they creep. Divide total supply cost per visit by total price per visit to get supplies as a share of revenue, and watch it each month when you restock.

Large jobs with heavy products (move-outs, post-construction) usually run higher, which is a good reason to price them separately.

=SUM(F2:F11)/SUM(D2:D11)

Result: 0.030890688259 shows as 3.1% with Percent format

3.1% of revenue goes on supplies: $76.30 across the ten visits against $2,470 of prices.

Practice: 8 exercises

Use the sample data above. Type a formula and press Check: it is graded by a real spreadsheet engine, the way Cellwise grades lessons.

  1. 1How many clients are on a biweekly schedule?

    Show answer

    =COUNTIF(C2:C11,"Biweekly") = 4. Marcus, Elena, Hana and Rosa: 4 clients.

  2. 2What is the average price per visit?

    Show answer

    =AVERAGE(D2:D11) = 247. $2,470 over 10 visits is $247.

  3. 3How much does Marcus (row 3) pay per hour of cleaning, before drive time?

    Show answer

    =D3/E3 = 61.666666667. $185 for 3 hours is $61.67 an hour.

  4. 4What does Elena's visit (row 4) cost in labor, including the drive time in H10?

    Show answer

    =(E4+H10)*H2 = 134.75. 5.5 paid hours at $24.50 is $134.75.

  5. 5What is the profit on the one-time move-out clean (row 11)?

    Show answer

    =D11-(E11+H10)*H2-F11 = 197.15. $420 - $208.25 - $14.60 = $197.15. Long one-time jobs can be very profitable when priced on their own.

  6. 6How much revenue do the weekly clients bring in over a year?

    Show answer

    =SUMIF(C2:C11,"Weekly",D2:D11)*52 = 42900. $825 a week across three weekly clients, times 52, is $42,900.

  7. 7What should Tom's monthly clean (row 5) be quoted before the minimum: sq ft times the base rate, less the monthly discount in H8?

    Show answer

    =B5*H3*(1-H8) = 148.5. 1,500 x $0.11 x 0.9 is $148.50. He pays $165 today.

  8. 8Quote Elena (row 4): sq ft times the rate, less the discount for her frequency looked up with XLOOKUP, rounded to whole dollars, and never below the minimum in H4.

    Show answer

    =MAX(H4,ROUND(B4*H3*(1-XLOOKUP(C4,G6:G9,H6:H9)),0)) = 299. 3,200 x $0.11 = $352, less 15% is $299.20, which rounds to $299. She pays $290, a little under the formula.

Free templates for cleaning services

Guided project: Recurring cleaning revenue

Turn a client list into visits per year, monthly recurring revenue and how much rides on your biggest clients.

6 steps in the Cellwise app. Each step checks your formula in a real grid, with hints when you get stuck. Part of Cellwise Plus.

Open guided projects

Guides for these formulas

FAQ

How do I make a cleaning quote calculator in Excel?

Put your rates in cells (price per square foot, per bathroom, minimum, discounts by frequency), then price each quote with =MAX(minimum, sqft*rate*(1-discount)). Look the discount up from a small table with XLOOKUP so one change updates every quote.

How do I calculate monthly revenue from weekly and biweekly clients?

Multiply the price by visits per year (52 weekly, 26 biweekly, 12 monthly) and divide by 12. Weekly clients bring in 52/12, about 4.33 visits a month, not 4.

How do I track cleaner hours in Excel?

Log each job with the cleaner's name, hours on site and drive time. =SUMIF(cleaner_range,"Ana",hours_range) totals one person's hours; add drive time with a second SUMIF to get paid hours.

Should I charge for drive time on cleaning jobs?

Most clients will not pay a separate drive fee, but you still pay for it. Build it into your cost per job, set a minimum price, and group jobs by area so drive time stays a small share of paid hours.

Excel for other fields

Updated