How to Use the RANK Function in Google Sheets

Published on

When you want to identify top performers in a dataset in Google Sheets, the RANK function is what you need to use.

There are two other similar functions: RANK.AVG and RANK.EQ. Let’s quickly overview how they differ before diving into the syntax and examples of the RANK function.

  • RANK: Returns the rank of a specified value in an array or range.
  • RANK.AVG: Similar to RANK but returns the average rank of the value if it appears multiple times.
  • RANK.EQ: Replaces the RANK function. Both functions can be used interchangeably.

To understand these functions better, consider the rank of the value 100 in a dataset. As it tops the list, it is ranked #1.

If 100 appears four times, the RANK and RANK.EQ functions will return 1, whereas RANK.AVG will return 2.5.

RANK Function: Syntax and Arguments

RANK Function Syntax in Google Sheets:

RANK(value, data, [is_ascending])

Arguments:

  • value: The value whose rank you want to find. If the specified value is not present, the formula will return #N/A, which you can handle using an IFNA wrapper.
  • data: The array or range to consider. It can be either one-dimensional or two-dimensional, but it should be of equal size.
  • is_ascending: An optional but important argument. You can specify either 0 or 1. If omitted, the value defaults to 0.
    • If 0, rank #1 will go to the greatest value.
    • If 1, rank #1 will go to the least value.

Understanding Ranking from Top to Bottom and Bottom to Top

Take a look at the following three formulas which return the rank of 10 in the array {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}:

=RANK(10, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
=RANK(10, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 0)
=RANK(10, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, 1)

The first two formulas will return 1, which is the rank of 10 in the array because the greatest value gets rank #1.

The last formula will return the rank 10 because the least value gets rank #1.

Ranking Students by Total Marks: Applying RANK with ARRAYFORMULA

In the following example, I have student names in A2:A5 and their total marks in F2:F5. To find their rank, we can use the following RANK array formula in cell G2.

=ArrayFormula(RANK(F2:F5, F2:F5, 0))
Ranking Students by Total Marks in Google Sheets

If you specify open ranges, wrap the formula with IFNA since the ‘value’ shouldn’t be empty.

=ArrayFormula(IFNA(RANK(F2:F, F2:F, 0)))

Open ranges result in empty value cells, causing the RANK function to return #N/A. Using IFNA helps remove such errors.

RANK Function in Visible Rows in Google Sheets

The RANK function can’t return the rank of values in visible rows only. However, in Google Sheets, you can follow the approach below to exclude hidden rows when returning the rank of values in a dataset.

For example, let’s consider the marks of students provided above. You can use the following formula in cell G2 to return the rank of visible values in the dataset:

=ArrayFormula(LET(values, F2:F5, visible_rows, MAP(values, LAMBDA(r, SUBTOTAL(103, r))), visible_values, IF(visible_rows, values, ), RANK(visible_values, visible_values)))

In this formula, F2:F5 is the reference corresponding to the total marks.

When you hide or filter out any rows, the formula will exclude values in corresponding cells in F2:F5 from the rank calculation.

Formula Breakdown

visible_rows: This part identifies visible rows by returning 1 for visible rows and 0 for hidden rows.

  • LAMBDA(r, SUBTOTAL(103, r)): A custom LAMBDA function that returns the count of values in the current row in the data.
  • MAP(values, LAMBDA(r, SUBTOTAL(103, r))): The MAP function iterates the custom function for each value in the array, where the array is F2:F5, named ‘values’ using LET. The output will be 1 for visible rows and 0 for hidden rows, corresponding to F2:F5.

visible_values: This part empties hidden cells virtually.

  • IF(visible_rows, values, ): If a row is visible (contains a count of 1, as hidden rows have a count of 0), the formula returns the values (marks); otherwise, it returns blank.

RANK(visible_values, visible_values): The RANK function returns the ranks of all values but ignores values in hidden rows, as they are converted to empty in the previous step.

Resources

Prashanth KV
Prashanth KV
Your Trusted Google Sheets and Excel Guide Prashanth KV brings a wealth of experience in Google Sheets and Excel, cultivated through years of work with multinational corporations in Mumbai and Dubai. As a recognized Google Product Expert in Docs Editors, Prashanth shares his expertise through insightful blogging since 2012. Explore his blog for practical tips and guidance on maximizing your spreadsheet skills.

Filter Top N per Category in Excel (Using FILTER & COUNTIFS)

You can use a combination of FILTER and COUNTIFS to filter the top N...

Rank per Group in Excel

You have two groups of 20 students each. How do you determine the rank...

Real-Time Excel Filtering Using Combo Box & FILTER Function

In this tutorial, you’ll learn how to set up real-time Excel filtering using a...

Google Sheets: Extract Top N per Group from Query Aggregation

When working with grouped and aggregated data in Google Sheets, you might need to...

More like this

Google Sheets: Extract Top N per Group from Query Aggregation

When working with grouped and aggregated data in Google Sheets, you might need to...

How to Extract Top N from Aggregated Query Results in Google Sheets

To summarize data in Google Sheets, you can use the QUERY function. However, if...

How to Use RANK IF in Google Sheets (Conditional Ranking)

You can use the RANK function to rank values in an entire dataset. But...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.