Purpose
Return value
Syntax
=SORT(array,[sort_index],[sort_order],[by_col])
- array - Range or array to sort.
- sort_index - [optional] Column index to use for sorting. Default is 1.
- sort_order - [optional] 1 = Ascending, -1 = Descending. Default is ascending order.
- by_col - [optional] TRUE = sort by column. FALSE = sort by row. Default is FALSE.
How to use
The SORT function sorts the contents of a range or array in ascending or descending order with a formula. The result from SORT is a dynamic array of values that will "spill" onto the worksheet into a range. If values in the source data change, the result from SORT will update automatically.
The SORT function takes four arguments: array, sort_index, sort_order, and by_col. The first argument, array, is the range or array to be sorted. This is the only required argument. By default, the SORT function will sort values in ascending order using the first column in array. Use the optional arguments sort_index and sort_order to control which column to sort by, and the order to sort by (ascending or descending). Sort_index should be a number corresponding to the column (or row) used for sorting. For example, to sort by the third column in a range of data, use 3 for sort_index. The optional sort_order argument determines sort direction. Use 1 for ascending order and -1 for descending order. By default, the SORT function will sort data vertically by rows. To sort a range horizontally by columns, set the fourth argument, by_col, to TRUE.
Basic Examples
To sort a range by the first column in ascending order:
=SORT(range) // sort by column 1, ascending
=SORT(range,1,1) // sort by column 1, ascending
To sort a range by the first column in descending order:
=SORT(range,1,-1) // sort by column 1, descending
To sort a range by the second column in descending order:
=SORT(range,2,-1) // sort by column 2, descending
To sort a range horizontally (by column) using values in row 1 in descending order, set the fourth argument, by_col, to TRUE or 1:
=SORT(range,1,-1,TRUE)
=SORT(range,1,-1,1)
Example - sort by score
In the example shown above, data includes names in column B and scores in column C. In cell E5, the SORT function is used to sort the data by score in descending order:
=SORT(B5:C14,2,-1) // sort by scores in descending order
The SORT function extracts all values, sorted in descending order by score, and results "spill" into the range E5:F14. To sort by score in ascending order, omit sort_order or to 1 like this:
=SORT(B5:C14,2) // sort by score in ascending order
=SORT(B5:C14,2,1) // sort by score in ascending order
Sort by more than one level
Unlike the SORTBY function, the SORT function does not provide a way to sort data by more than one level. However, by using array constants for sort_index and sort_order, it can be done. This video explains how.
SORT vs SORTBY
Excel contains two functions for sorting: SORT and SORTBY. The SORT function is the easier option when data already contains the values needed for sorting. Use SORTBY when the values you need to sort by are not part of the data being sorted.
Notes
- SORT returns a #VALUE error if sort_index is out of range.