Summary

To sort by two columns, you can use the SORTBY function. In the example shown, data is sorted first by the Group column in ascending order, then by the Score column in descending order. The formula in F5 is:

=SORTBY(B5:D14,D5:D14,1,C5:C14,-1)

The result is data sorted by group, then by score, with highest scores appearing first.

Generic formula

=SORTBY(data,col1,order,col2,order)

Explanation 

In the example shown, we want to sort data in B5:D14 first by group in descending order. Here is the configuration needed:

  • array = B5:D14
  • by_array1 = D5:D14
  • sort_order1 = 1

The formula below will sort data by group A-Z:

=SORTBY(B5:D14,D5:D14,1) // sort by group only

To extend the formula to sort next by score, in descending order, we need to add:

  • by_array2 = C5:C14
  • sort_order2 = -1

With these arguments added, the complete formula is:

=SORTBY(B5:D14,D5:D14,1,C5:C14,-1)

Ascending vs. Descending

Data is sorted in ascending order (A-Z) by default. This behavior is controlled by the sort_order arguments. Sort_order can be set to 1 (ascending) or -1 (descending). The formula below is the same as above except that it sorts scores in ascending order:

=SORTBY(B5:D14,D5:D14,1,C5:C14,1)

Example - sort by two columns in ascending order

Dynamic Array Formulas are available in Office 365 only.
Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.