SORT function in Excel

SORT Function

The SORT function is one of Excel’s best new features.  It’s one of a group of functions that make use of Excel’s new dynamic array calculation engine, enabling Excel to spill results into multiple cells from a single formula.

At the time of writing, the SORT function is only available to those on a Microsoft 365 subscription.  It will not be available in Excel 2019 or earlier versions.

Download the example file
I recommend you download the files which support this post, as you’ll be able to work along with examples.  This is the best way to learn.  You’ll be able to see the solutions in action, plus the file will be useful for future reference.  The support files are available for FREE to newsletter subscribers.

Click below to subscribe and gain access to the subscriber area.  You will also receive:

  • My favorite tips and tricks direct to your inbox
  • Exclusive content (which is only available to subscribers)
  • FREE tools and downloads

Download Icon

If you’re already a subscriber, click here to log-in to the subscriber downloads area.

The filename for this post is 0033 SORT function in Excel.xlsx 

Arguments of the SORT function

Before we look at the arguments required for the SORT function, let’s look at a basic example to appreciate what it does.

As demonstrated below, the SORT function does exactly what you would expect; it sorts the data.  The critical point is to notice that it achieves this with a single function in a single cell and spills the other results into the cells below.

Basic SORT Functionality

SORT has four arguments:

=SORT(array, [sort_index], [sort_order], [by_col])
  • array: The range of cells, or array of values to be sorted.
  • [sort_index]: The nth column or row to apply the sort to.  For example, to sort by the 2nd column, the sort index would be 2.  It is possible to sort by multiple columns (covered in Example 6 below).  If this argument is excluded, it will default to sorting by the first column.
  • [sort_order]: 1 = sort in ascending order, -1 = sort in descending order (if excluded the argument will default to 1).
  • [by_col]: TRUE = sort by columns, FALSE = sort by rows (if excluded the argument will default to FALSE).

Download the 100 Excel Macros ebook

100 Excel Macros Book

  • Contains 100 Excel VBA macros
  • Learn VBA by following along with the example codes
  • Apply to your macros, automate Excel, save time.

Download the ebook today!

Click the button below to subscribe, you’ll gain access to the subscriber area in which you can download the ebook.

Download Icon (on mid-green background)

Examples of using the SORT function

The following examples illustrate how to use the SORT function.

Example 1 – SORT returns an array of rows and columns

In this example, a single formula sorts the values in the first column and returns the full range of cells provided by the array argument.

SORT Spill Range with default arguments

The formula in cell G3 is:

=SORT(B3:E10)

This single formula is returning eight rows and four columns of data.  As the second, third, and fourth arguments have been excluded, the default has been applied for each of them, sorting by the first column, in ascending order with data organized in rows.

Example 2 – SORT by another column in descending order

Example 2 shows how to sort by the second column in descending order.

SORT on column 2 in reverse order

The formula in cell G3 is:

=SORT(B3:E10,2,-1)

The second argument in the SORT function is the sort_index.  The formula above is sorting by the 2nd column of the array.

The third argument is the sort_order.  The -1 in this formula denotes the data sorts in descending order.

Example 3 – SORT expands automatically when linked to a table

The animation below shows how the SORT function responds when linked to an Excel table.

SORT with tables

In this example, the SORT function is using an Excel table as its source data array.  New records added are automatically added to the spill range of the function.

Example 4 – Using SORT to return a top 5 and specific columns

Example 4 shows how to create a top 5 and select which specific columns to return.

SORT to return top 5 in order

The formula in cell G3 is:

=INDEX(SORT(B3:E10,4,-1),SEQUENCE(5),{1,4})

We are using two additional functions in this example, SEQUENCE (also a new function) and INDEX (which is not new, it has been around forever).

The SORT is applied to the 4th column in descending order, we have seen similar examples to this above.

INDEX is taking the result of the SORT function and using:

  • The SEQUENCE function to only show the first 5 results
  • A constant array to display only columns 1 and 4.

In the past, this would have needed a lot of calculations, but now it’s possible with a single function – Amazing!

Example 5 – Combining FILTER and SORT

The dynamic array functions can be nested within each other.  This example shows the FILTER function nested inside SORT.

SORT with FILTER

The formula in cell G3 is:

=SORT(FILTER(B3:E10,C3:C10>=100))

The FILTER function is returning only three rows, where the values in cells C3-C10 are 100 or higher.  The SORT is then applied to the result of the FILTER, to provide those filtered rows in alphabetical order.

Example 6 – SORT on multiple columns

SORT can be applied to multiple columns at the same time.

SORT with multiple criteria

The formula in cell G3 is:

=SORT(B3:E10,{2,1},{1,-1})

This formula contains two constant arrays.   The first, {2,1} is the sort_order, which in this example is sorting by column 2 then by column 1.  The second constant array is {1,-1}, which determines how each column sorts.  The first sort (applied to column 2) is in ascending order, and the second sort (applied on column 1) is in descending order.

Want to learn more?

There is a lot to learn about dynamic arrays and the new array functions.  Check out my other posts here to learn more:

  • Introduction to dynamic arrays – learn how the excel calculation engine has changed.
  • UNIQUE – to list the unique values in a range
  • SORT – to sort the values in a range
  • SORTBY – to sort values based on the order of other values
  • FILTER – to return only the values which meet specific criteria
  • SEQUENCE – to return a sequence of numbers
  • RANDARRAY – to return an array of random numbers

Don’t forget:

If you’ve found this post useful, or if you have a better approach, then please leave a comment below.

Do you need help adapting this to your needs?

I’m guessing the examples in this post didn’t exactly meet your situation.  We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs.  By taking the time to understand the techniques and principles in this post (and elsewhere on this site) you should be able to adapt it to your needs.

But, if you’re still struggling you should:

  1. Read other blogs, or watch YouTube videos on the same topic.  You will benefit much more by discovering your own solutions.
  2. Ask the ‘Excel Ninja’ in your office.  It’s amazing what things other people know.
  3. Ask a question in a forum like Mr Excel, or the Microsoft Answers Community.  Remember, the people on these forums are generally giving their time for free.  So take care to craft your question, make sure it’s clear and concise.  List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
  4. Use Excel Rescue, who are my consultancy partner.   They help by providing solutions to smaller Excel problems.

What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid.  Check out the latest posts:

Leave a Reply

Your email address will not be published. Required fields are marked *