Excel guide · 5 min read
How to calculate NPS in Excel
=(COUNTIF(C2:C14,">=9")-COUNTIF(C2:C14,"<=6"))/COUNT(C2:C14)*100. COUNT only counts numbers, so blanks and text like "N/A" are left out. The result is a score from -100 to +100.Sample data
Every result on this page was calculated from this sheet by the same spreadsheet engine the Cellwise app uses.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Response date | Team | Score (0-10) | Team | Month | ||
| 2 | Sep 3, 2026 | Support | 10 | Support | Sep 1, 2026 | ||
| 3 | Sep 5, 2026 | Sales | 9 | Sales | Oct 1, 2026 | ||
| 4 | Sep 11, 2026 | Support | 7 | ||||
| 5 | Sep 18, 2026 | Support | 3 | ||||
| 6 | Sep 24, 2026 | Sales | 8 | ||||
| 7 | Sep 29, 2026 | Sales | 10 | ||||
| 8 | Oct 2, 2026 | Support | |||||
| 9 | Oct 7, 2026 | Sales | 6 | ||||
| 10 | Oct 13, 2026 | Support | 9 | ||||
| 11 | Oct 20, 2026 | Support | 10 | ||||
| 12 | Oct 22, 2026 | Sales | 5 | ||||
| 13 | Oct 28, 2026 | Sales | 9 | ||||
| 14 | Oct 30, 2026 | Support | N/A |
Download this sheet as an Excel practice file (.xlsx)
The NPS formula in one cell
The sheet holds 13 replies to "How likely are you to recommend us?" from a support and a sales team. One person skipped the question, one typed N/A, and one 9 was pasted in as text. That is what real survey exports look like.
COUNTIF(C2:C14,">=9") counts the promoters (5) and COUNTIF(C2:C14,"<=6") the detractors (3). Passives, the 7s and 8s, are not in the formula, but they still count in the total. COUNT(C2:C14) gives 10, the number of real scores. 5 minus 3 is 2, divided by 10 is 0.2, times 100 is an NPS of 20.
Result: 20
20: 50% promoters minus 30% detractors.
A promoters, passives and detractors table
Reports usually show the three groups next to the score, because an NPS of 20 can come from very different mixes. Put each share in its own cell and format them as percentages (Home > Number > %).
Promoters: =COUNTIF(C2:C14,">=9")/COUNT(C2:C14) gives 50%. Passives: =COUNTIFS(C2:C14,">=7",C2:C14,"<=8")/COUNT(C2:C14) gives 20%. Detractors: =COUNTIF(C2:C14,"<=6")/COUNT(C2:C14) gives 30%. The three add up to 100%, which is a quick check that every score fell into a group.
NPS is then promoters minus detractors. Leave it as a whole number: write 20, not 20%. NPS is a score on a -100 to +100 scale, not a percentage of anything, and showing it with a % sign is a common reporting mistake.
Result: 0.2
0.2, the same score as a fraction. Multiply by 100 to show it as 20.
NPS by team with COUNTIFS
To split the score by team, add the team as a condition to every count. E2 holds Support and E3 holds Sales, so you can write the formula once next to E2 and fill it down.
The divisor needs care. COUNTIFS has no "is a number" test, but the condition ">=0" only matches numbers, so COUNTIFS(B2:B14,E2,C2:C14,">=0") counts the team's real scores and skips blanks and text. Do not use "<>" for this: it counts every non-empty cell, so Support gets 6 replies instead of 4.
Support scores 25 and Sales scores 17 (16.67 before rounding). With only 4 and 6 answers, single replies swing the score: one extra promoter would lift Support from 25 to 40. Show the number of responses beside each score.
Result: 25
25 for Support: 2 promoters and 1 detractor out of 4 scores.
NPS by month, and ROUND vs ROUNDUP
For a monthly trend, put the first day of each month in G2 and G3 and count dates from that day up to the start of the next month: ">="&G2 and "<"&EDATE(G2,1). This works for any month length and needs no helper column. The response dates must be real dates, not text.
September comes to 33.33. Round to a whole number with ROUND, which gives 33. ROUNDUP always rounds away from zero, so it turns 33.33 into 34 and makes positive months look better than they are. On negative scores it goes the other way: ROUNDUP(-16.2,0) is -17, where ROUND gives -16. Most survey tools show NPS as a whole number, so round it the same way when you compare with their dashboards.
October scores 0 as the data stands: 2 promoters and 2 detractors out of 4 numbers. The text 9 from October 13 is missing from that month, which is the next problem.
Result: 33
33 for September 2026: 3 promoters, 1 detractor, 6 scores.
Scores typed as text, blanks and N/A
Survey exports and copy-pastes often bring numbers in as text. COUNTIF with ">=9" or "<=6" only compares real numbers, and COUNT skips text, so the 9 in C10 is silently dropped from everything. Compare COUNTA with COUNT to find out: a gap means text is hiding in the column. Here the gap is 2, the N/A and the text 9.
Watch for formulas that treat text differently. =COUNTIF(C2:C14,9) returns 3, because an exact match does count the text "9". And =SUMPRODUCT(--(C2:C14>=9)) returns 7, because in a direct comparison Excel ranks any text above every number, so N/A counts as a promoter. Fixing the data is safer than working around it.
Once C10 holds a real 9, the overall NPS goes from 20 to 27 (27.27 before rounding), Support from 25 to 40, and October from 0 to 20. A blank or N/A should stay out of the count: someone who did not answer is not a detractor. That is why COUNT, not COUNTA, is the divisor. Dividing by COUNTA here gives 16.67.
- Select the score column (C2:C14).
- If cells show a green triangle, click the warning icon next to the selection and choose Convert to Number.
- Otherwise use Data > Text to Columns and click Finish straight away. Text that looks like a number becomes a number; N/A stays text and stays out of the count.
- To stop new typos, use Data > Data Validation, allow Whole number between 0 and 10.
Result: 2
2: two non-empty cells in the score column are not numbers.
Common mistakes
Averaging the scores instead
AVERAGE(C2:C14) gives 7.7, which is not an NPS and hides how many people are unhappy. NPS only counts promoters and detractors.
Dividing by COUNTA or by all rows
COUNTA counts N/A and text, and all rows include skipped answers. Divide by COUNT, or by COUNTIFS(...,">=0") per group.
Leaving out the passives
7s and 8s are not in the numerator but must be in the total. Dividing by promoters plus detractors only inflates the score.
Showing NPS as a percentage
Write 20, not 20%. The score runs from -100 (all detractors) to +100 (all promoters).
FAQ
What is the formula for NPS in Excel?
=(COUNTIF(range,">=9")-COUNTIF(range,"<=6"))/COUNT(range)*100. It is the share of 9s and 10s minus the share of 0 to 6 scores, multiplied by 100.
Is a 7 or 8 a promoter or a detractor?
Neither. 7 and 8 are passives. They count in the total number of responses, so they pull the score towards 0, but they are not added or subtracted.
Can NPS be negative?
Yes. If there are more detractors than promoters, the score is below zero. The lowest possible score is -100, when every answer is 0 to 6.
How do I calculate NPS in a pivot table?
Add a helper column with =IF(ISNUMBER(C2),IF(C2>=9,100,IF(C2<=6,-100,0)),"") and fill it down: promoters score 100, detractors -100, passives 0, and blanks or text get "". The Average of that column is the NPS, 20 for this sheet, so show Average in the pivot with Team or month as rows.
Why is my NPS different from my survey tool?
Usually because text scores were dropped, blanks were counted, or the tool rounds differently. Compare the response count first: COUNT on your column should match the tool's number of answers.
Functions used
COUNTIFCounts cells that matchCOUNTIFSCounts with several conditionsCOUNTCounts numbersCOUNTACounts non-empty cellsROUNDRounds to digitsROUNDUPRounds away from zeroEDATESame day, months laterSUMPRODUCTMultiply then addAVERAGEMean of numbersIFPicks a result from a test
Related guides
- COUNTIFS with multiple criteria in Excel
- How to count Yes and No answers in Excel
- How to convert numbers stored as text in Excel
- ROUND vs ROUNDUP vs ROUNDDOWN in Excel
- Excel formulas cheat sheet: the 25 everyone should know
- How to find missing numbers in a sequence in Excel
- Attendance tracker formulas in Excel
Updated