Cellwise Start free

Excel guide · 5 min read

How to calculate NPS in Excel

Quick answerNPS is the percentage of promoters (scores 9-10) minus the percentage of detractors (0-6). With the answers in C2:C14, use =(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.

ABCDEFG
1Response dateTeamScore (0-10)TeamMonth
2Sep 3, 2026Support10SupportSep 1, 2026
3Sep 5, 2026Sales9SalesOct 1, 2026
4Sep 11, 2026Support7
5Sep 18, 2026Support3
6Sep 24, 2026Sales8
7Sep 29, 2026Sales10
8Oct 2, 2026Support
9Oct 7, 2026Sales6
10Oct 13, 2026Support9
11Oct 20, 2026Support10
12Oct 22, 2026Sales5
13Oct 28, 2026Sales9
14Oct 30, 2026SupportN/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.

=(COUNTIF(C2:C14,">=9")-COUNTIF(C2:C14,"<=6"))/COUNT(C2:C14)*100

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.

=COUNTIF(C2:C14,">=9")/COUNT(C2:C14)-COUNTIF(C2:C14,"<=6")/COUNT(C2:C14)

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.

=ROUND((COUNTIFS(B2:B14,E2,C2:C14,">=9")-COUNTIFS(B2:B14,E2,C2:C14,"<=6"))/COUNTIFS(B2:B14,E2,C2:C14,">=0")*100,0)

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.

=ROUND((COUNTIFS(A2:A14,">="&G2,A2:A14,"<"&EDATE(G2,1),C2:C14,">=9")-COUNTIFS(A2:A14,">="&G2,A2:A14,"<"&EDATE(G2,1),C2:C14,"<=6"))/COUNTIFS(A2:A14,">="&G2,A2:A14,"<"&EDATE(G2,1),C2:C14,">=0")*100,0)

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.

  1. Select the score column (C2:C14).
  2. If cells show a green triangle, click the warning icon next to the selection and choose Convert to Number.
  3. 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.
  4. To stop new typos, use Data > Data Validation, allow Whole number between 0 and 10.
=COUNTA(C2:C14)-COUNT(C2:C14)

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

Related guides

Updated