Win Rate by Sales Rep
The breakdown every sales meeting asks for. How to build it from an export, the two ways it silently misleads, and the check that takes ten seconds and catches both.
Win rate by rep is the most-requested breakdown in sales reporting, it takes about four minutes to build, and it fails in two specific ways that are both invisible in the finished table. Neither is about arithmetic.
Building it
Start from the definition, which needs settling first: won deals over closed deals, counts, open deals excluded. If that is not already agreed, the breakdown will inherit an argument — the three definitions and their consequences are in why your win rate keeps changing.
With a deal export in Deals and rep names in column A:
Won =COUNTIFS(Deals[Stage],"Closed Won",Deals[Owner],$A2)
Closed =COUNTIFS(Deals[Stage],"Closed Won",Deals[Owner],$A2)
+COUNTIFS(Deals[Stage],"Closed Lost",Deals[Owner],$A2)
Rate =IFERROR(B2/C2,"no closed deals")
Build the rep list in column A from the unique values in the owner column — =UNIQUE(Deals[Owner]) — rather than typing it. A typed list is correct on the day it is written and silently wrong the first time someone joins.
Failure one: reps who are not in the table
The dangerous version of this report is not one with a wrong number. It is one with a missing row, because a missing row looks like nothing at all.
Three ways it happens:
- The rep list is stale. Anyone who joined after the sheet was built has no row.
- The owner field is blank on some deals. Those deals group under nothing, so they are in no rep's row and in no visible total.
- The table was built from wins. A rep with eleven losses and no wins has no won rows to be found by, so they do not appear — and they are the single most important row on the page.
One check catches all three:
=SUM(C2:C40)=COUNTIFS(Deals[Stage],"Closed Won")+COUNTIFS(Deals[Stage],"Closed Lost")
If the closed deals in your table do not sum to the closed deals in the export, someone is missing. Ten seconds, and it is the only thing standing between you and a confident, incomplete ranking.
Failure two: ranking on numbers too small to rank
A quarter rarely gives a rep enough closed deals to distinguish them from each other.
Rep Won Closed Rate A 2 5 40% B 9 21 43% C 1 4 25%
Rep C is bottom of the table. Rep C also closed four deals; one more win makes it 50% and moves them to the top. Nothing about Rep C changed, and the ordering of this table is mostly noise.
The defence is not statistical sophistication. It is putting the closed count next to the rate, always, so a reader can see what the percentage is made of. A rate without its denominator invites a ranking, and a ranking on four deals is a coin toss that someone is about to act on.
We shipped a version of the missing-rep bug ourselves. Asking our own tool for the breakdown one way and asking a slightly different way gave different routes through the data, and the looser one dropped two reps of five while returning a table that looked entirely correct — right shape, plausible percentages, nothing amiss on the page.
That is the lesson worth taking, whether you use a pivot or an AI tool: the answer that looks right and the answer that is right are indistinguishable by inspection. The only defence is checking that the parts sum to the whole. It costs one formula and it is the reason our answers now say which definition produced them.
Owner is not always who you think
In many CRMs the owner is set when the deal is created and never revisited, so the field records who sourced the deal rather than who closed it. In others it moves on handover. Both are legitimate and they produce different tables from the same export.
Worth knowing which yours does before anyone is measured on it. Where a team splits sourcing and closing, one owner field cannot represent both, and the honest table says which one it is showing.
Breakdowns that are usually more useful
Rep-level win rate is what gets asked for. Three others are frequently more actionable and less noisy, because their denominators are bigger:
- By source. Which lead sources produce winnable deals. Actionable at the marketing end.
- By deal type. New business versus expansion behave completely differently and averaging them hides both.
- By loss reason. Not a win rate at all, and often the most useful table in the set — provided blank reasons are shown rather than dropped.
Asking for it instead of building it
Quiriz for CRM holds win rate as one definition and breaks it down by rep, team, region, source, deal type or loss reason without a new pivot each time. In Excel that is =QUIRIZ.ASK("win rate by sales rep this quarter", "table").
Deals with no owner, no source or no loss reason recorded are bucketed into a visible row rather than dropped from the breakdown, so a table always ties back to the ungrouped total. That is the fix for failure one, applied by default.
The honest boundary: we cannot make a five-deal quarter significant. The count comes back beside the rate for exactly that reason, and a small sample is still a small sample no matter how it is computed.
Get the breakdown without the pivot
Upload your CRM export and ask for win rate by rep, source or deal type in plain English. Free to start.
Try Quiriz free →