Excel PERCENTRANK: Find the Percentile Rank of a Score
By ExcelReady TeamUpdated 6 min read
The short answer
PERCENTRANK.INC(array, x) returns the share of values in a list that are below x, as a decimal from 0 to 1. For example, =PERCENTRANK.INC(B2:B9,74) returns 0.571, so 74 sits at about the 57th percentile. PERCENTRANK.EXC uses a slightly different scale that never reaches 0 or 1. The older PERCENTRANK works like PERCENTRANK.INC.
Key takeaways
- PERCENTRANK.INC(array, x) returns where x sits in a list, from 0 (lowest) to 1 (highest).
- For a value in the list, it equals the count of smaller values divided by the count of values minus 1.
- PERCENTRANK.EXC never returns exactly 0 or 1, so it suits samples where more extreme values could exist.
- Excel cuts the result to 3 significant digits by default; the optional third argument changes that.
- A value outside the lowest-to-highest range returns #N/A.
On this page+
PERCENTRANK in Excel tells you where a value sits in a list, as a share from 0 to 1: =PERCENTRANK.INC(B2:B9,74) returns 0.571, so a score of 74 beats about 57% of the other scores. It is the function to use for "what percentile is this score?" questions in test results, salary bands or sales rankings. This guide covers the INC and EXC versions, the formula behind them, and the errors you may see.
What PERCENTRANK does#
PERCENTRANK returns the percentile rank of a value: the share of the other values that are lower. A result of 0 means it is the lowest value, and 1 means it is the highest.
Excel has three versions:
| Function | Scale | Available in |
|---|---|---|
| PERCENTRANK.INC | 0 to 1, inclusive | Excel 2010 and later |
| PERCENTRANK.EXC | Strictly between 0 and 1 | Excel 2010 and later |
| PERCENTRANK | Same as PERCENTRANK.INC | All versions, kept for compatibility |
All examples use these eight test scores in A1:B9:
| A | B | |
|---|---|---|
| 1 | Student | Score |
| 2 | Ana | 74 |
| 3 | Ben | 62 |
| 4 | Chloe | 93 |
| 5 | Dev | 55 |
| 6 | Eli | 80 |
| 7 | Fay | 68 |
| 8 | Gus | 86 |
| 9 | Hana | 71 |
The data does not need to be sorted.
How to use PERCENTRANK.INC#
The syntax has two required arguments and one optional one:
=PERCENTRANK.INC(array, x, [significance])- array is the list of numbers, such as
B2:B9. - x is the value whose rank you want, such as
74orB2. - significance is the number of significant digits in the result. Leave it out and Excel uses 3.
To find Ana's percentile rank:
=PERCENTRANK.INC($B$2:$B$9,B2)The result is 0.571. Format it as Percent and it shows 57.1%. Fill the formula down to rank every student: Dev (55) gets 0, Chloe (93) gets 1, and Eli (80) gets 0.714. The $ signs keep the list fixed while B2 moves down.
Note that Excel cuts the result to three digits rather than rounding it. The exact value is 0.5714…, and with =PERCENTRANK.INC($B$2:$B$9,B2,4) you get 0.5714.
The formula behind PERCENTRANK.INC#
For a value that appears in the list, PERCENTRANK.INC is a simple count. It divides the number of lower values by the number of values minus 1:
=COUNTIF(B2:B9,"<"&B2)/(COUNT(B2:B9)-1)Four scores are lower than 74 (55, 62, 68 and 71), and there are 8 scores, so the result is 4 / 7 = 0.5714. COUNTIF counts the cells that meet a condition, and COUNT counts the numbers. The COUNTIF function guide and the COUNT function guide explain both.
Why divide by 7 and not 8? Ana is not compared with herself, so there are 7 other scores. The lowest score has 0 below it (0 / 7 = 0), and the highest has 7 below it (7 / 7 = 1).
Knowing this formula helps when you need to explain the result, or when a test asks you to work it out without the function. Tied values get the same percentile rank, because they have the same number of values below them.
PERCENTRANK.INC vs PERCENTRANK.EXC#
The two versions use slightly different scales. PERCENTRANK.EXC adds 1 to the count of lower values and divides by the number of values plus 1:
| Score | PERCENTRANK.INC | PERCENTRANK.EXC |
|---|---|---|
| 55 (lowest) | 0 | 0.111 |
| 74 | 0.571 | 0.555 |
| 93 (highest) | 1 | 0.888 |
For 74, EXC is (4 + 1) / (8 + 1) = 0.5555…, cut to 0.555. EXC never returns exactly 0 or 1. Use it when your data is a sample and you don't want to claim a value is the absolute lowest or highest possible. For grades and internal rankings, INC is the usual choice and matches the older PERCENTRANK.
What happens with values that are not in the list?#
PERCENTRANK works for any value between the lowest and highest, even if it isn't in the list. Excel fills the gap by straight-line interpolation:
=PERCENTRANK.INC(B2:B9,77)77 sits halfway between 74 (0.5714) and 80 (0.7143), so the result is about 0.6429, shown as 0.642. A value outside the range, such as 50 or 95, returns #N/A. If you score new values against old data, wrap the formula in IFERROR to show a message instead.
Percentile rank vs RANK and PERCENTILE#
Three related tools answer different questions about the same list:
| Question | Function | Example result |
|---|---|---|
| What position is 74, counting from the top? | =RANK.EQ(74,B2:B9) | 4th |
| What share of scores is below 74? | =PERCENTRANK.INC(B2:B9,74) | 0.571 |
| What score sits at the 90th percentile? | =PERCENTILE.INC(B2:B9,0.9) | 88.1 |
RANK gives a place, which depends on how many values there are. Percentile rank gives a share, so you can compare across groups of different sizes. The guides to the RANK function and to percentiles and quartiles cover the other two. For the very top or bottom values, LARGE and SMALL are often simpler; see finding the top N values.
Common PERCENTRANK mistakes#
Check these if the result looks wrong:
- Swapping the arguments. The list comes first and the value second:
PERCENTRANK.INC(B2:B9,74), notPERCENTRANK.INC(74,B2:B9). - Expecting a rounded result. 0.5714 shows as 0.571, not 0.572. Add the significance argument for more digits.
- Text in the list. Numbers stored as text are ignored. Convert them with VALUE first.
- Reading 0.571 as 0.571%. It means 57.1%. Use Percent format to make that clear.
- Forgetting the $ signs when filling down, so the list shrinks row by row.
Practise it#
Percentile rank builds on two basics: knowing where the smallest and largest values are, and counting with conditions. Practise AVERAGE, MIN and MAX in a live spreadsheet, then practise LARGE and SMALL to find top and bottom values: you type the formula and it checks it instantly. Or try the exercise on this page and work out Ana's percentile rank with COUNTIF and COUNT.
Try it yourself
This is a live spreadsheet. Type the formula in the green cell and press Enter.
Find Ana's percentile rank without PERCENTRANK. In E2, divide the number of scores below B2 (use COUNTIF on B2:B9) by the number of scores minus 1 (use COUNT), then press Enter.
| A | B | C | D | E | F | |
|---|---|---|---|---|---|---|
| 1 | Score | |||||
| 2 | Ana's percentile rank | |||||
| 3 | ||||||
| 4 | ||||||
| 5 | ||||||
| 6 | ||||||
| 7 | ||||||
| 8 | ||||||
| 9 | ||||||
| 10 | ||||||
| 11 | ||||||
| 12 |
Tip: COUNTIF(B2:B9,"<"&B2) counts the lower scores. Divide it by COUNT(B2:B9)-1, with brackets around the bottom part.
Practise this in a lesson
Frequently asked questions
What does PERCENTRANK do in Excel?
It returns the relative position of a value in a list as a decimal between 0 and 1. A result of 0.75 means the value is higher than 75% of the other values, so it sits at the 75th percentile.
What is the difference between PERCENTRANK.INC and PERCENTRANK.EXC?
PERCENTRANK.INC gives the lowest value 0 and the highest value 1. PERCENTRANK.EXC divides by the count plus 1, so its results always fall strictly between 0 and 1.
Why does PERCENTRANK return #N/A?
The value you ask about is lower than the smallest value or higher than the largest value in the list. PERCENTRANK only works for values inside the range of the data.
How do I show PERCENTRANK as a percentage?
Format the cell as Percent with Home > Number Format > Percentage. A result of 0.571 then shows as 57.1%, or 57% with no decimals.
What is the difference between PERCENTRANK and PERCENTILE?
They work in opposite directions. PERCENTRANK takes a value and returns its percentile. PERCENTILE takes a percentile, such as 0.9, and returns the value at that point.