Analistable

Which customers stopped ordering this month?

By the Analistable team · Updated · 3 min read

List the customers in last month's export whose name or ID has no match in this month's export. In Excel or Google Sheets: =UNIQUE(FILTER(Aug[Customer], COUNTIF(Sep[Customer], Aug[Customer]) = 0)). In SQL it's a left join where the right side is NULL. In the example, Hart & Co and Kiln Studio ordered in August but not in September.

Part of our guide: How to answer questions across multiple spreadsheets

The data

Two monthly order exports
August: customerOrderAmountSeptember: customerOrderAmount
Bakery LuneA1120Bakery LuneS1130
Hart & CoA280Nordic SupplyS290
Nordic SupplyA375Oak & AshS355
Kiln StudioA460Pine CoS470
Bakery LuneA540

In a spreadsheet

=UNIQUE(FILTER(Aug[Customer], COUNTIF(Sep[Customer], Aug[Customer]) = 0, "Nobody"))

COUNTIF counts each August customer in September's list; FILTER keeps the zeros; UNIQUE removes repeats (Bakery Lune ordered twice in August).

In SQL

SELECT DISTINCT a.customer
FROM aug a
LEFT JOIN sep s ON s.customer = a.customer
WHERE s.customer IS NULL;
Result
Customer
Hart & Co
Kiln Studio

Make it meaningful

  • Use a customer ID or email, not a name — “Hart & Co” and “Hart and Co” would look like a lost and a new customer.
  • Choose the window to fit your buying cycle. For customers who order quarterly, compare quarters, not months, or every quiet month looks like churn.
  • Add what they spent before they stopped (SUMIFS on the August amounts) and sort by it, so you call the biggest losses first.
  • For subscriptions, use the billing export's status instead: cancelled or past-due subscriptions are churn by definition.

Ask it in Analistable: “Which customers ordered in August but not in September, and how much did they spend in August?” The reverse question is finding new customers.

In Google Sheets

=UNIQUE(FILTER(Aug!A2:A, Aug!A2:A <> "", COUNTIF(Sep!A2:A, Aug!A2:A) = 0))

The extra <> "" condition stops empty rows from appearing in the result when the ranges are open-ended.

Put a value on the lost customers

Aug spend =SUMIFS(Aug[Amount], Aug[Customer], A2)
Share     =B2 / SUM(Aug[Amount])
Stopped customers, August spend
CustomerAugust ordersAugust spendShare of August revenue
Hart & Co18021.3%
Kiln Studio16016.0%
Total214037.3%

August revenue was 375 (120 + 80 + 75 + 60 + 40). Half the customers stopped, but they accounted for 37.3% of revenue — the revenue-weighted figure is usually the one finance cares about, while the customer count is what account managers chase.

Excel 2019 and older, without FILTER

In versions without dynamic arrays, add a helper column to the August table: =COUNTIF(Sep!A:A, A2). Apply an AutoFilter, keep rows where the helper is 0, and copy the visible customers to a new sheet. Use Data › Remove Duplicates on that list so Bakery Lune-style repeat orders don't appear twice. On a Mac the steps and menu names are the same.

Troubleshooting

When the list looks wrong
SymptomLikely causeFix
Every customer appears as stoppedSeptember range points at the wrong column or sheetCheck the COUNTIF range really holds customer IDs
A loyal customer is listedTrailing space or different spelling in one exportCompare on TRIM(LOWER(...)) or switch to an ID
Blank row in the resultOpen-ended range includes empty cellsAdd a condition that the customer is not empty
Too many stopped customersWindow shorter than the normal reorder gapCompare quarters, or use days since last order

Repeat it every month

  • Keep each month's export in the same layout and add a Month column when you stack them, so the same query works for any pair of months.
  • Record the count and value of stopped customers each month; one bad month is noise, three in a row is a trend.
  • Check the result against the customer count: stopped + retained must equal last month's distinct customers (2 + 2 = 4 here).
  • For a recency view that does not depend on month boundaries, see first and last order per customer.

Frequently asked questions

How do I find customers who didn't reorder?
Filter last period's customers to those with a COUNTIF of zero in this period's list, or use a SQL left join with WHERE right.key IS NULL.
Is this the same as churn rate?
Close: churn rate = customers who stopped ÷ customers at the start of the period. Here, 2 of 4 August customers = 50%.
What if customer names are spelled differently?
Match on an ID or email. If you only have names, clean them first or use fuzzy matching.

Related guides