11.2 Multi-Level Sorting: SORT & SORTBY Functions

Key Takeaways

  • The SORT function dynamically sorts an array by an internal column or row index, defaulting to ascending order (1) on the first column.
  • Multi-column sorting in SORT is achieved by supplying array constants for both sort_index (e.g., {2, 4}) and sort_order (e.g., {1, -1}).
  • SORTBY provides superior architectural flexibility by sorting a target array against external criteria vectors that do not need to be present in the returned output.
  • Specifying a sort_index greater than the total number of columns in the source array causes SORT to return a #VALUE! error.
  • Nesting SORT or SORTBY with FILTER creates automated leaderboards, ranking models, and executive dashboards that recalculate dynamically as source records change.
Last updated: September 2026

Multi-Level Sorting: SORT & SORTBY Functions

Sorting data is an essential operation in financial reporting, performance ranking, and dataset organization. In traditional Excel workflows, sorting required selecting a range and invoking the static Data > Sort dialog. While effective for one-time audits, static sorting has significant drawbacks in enterprise models: it permanently reorders source rows, disrupts relative cell references, destroys manual record sequences, and requires manual re-sorting whenever source values change.

The dynamic array functions SORT and SORTBY provide non-destructive, formula-driven sorting. Rather than modifying the underlying table, these functions read the source data and output an ordered, spilled array in a new location. Whenever source records are edited, appended, or recalculated, the sorted spill range updates instantaneously.


Anatomy and Argument Architecture of SORT

The SORT function reorders an array based on values within one or more of its own columns or rows. Its syntax is:

=SORT(array, [sort_index], [sort_order], [by_col])
ArgumentRequired / OptionalDefault ValueDescription & Rules
arrayRequiredNoneThe range or array to sort.
[sort_index]Optional1A 1-based number indicating the column (or row) within array to sort by. Can also be an array constant of indices (e.g., {1, 2}).
[sort_order]Optional11 for ascending order (A to Z, smallest to largest); -1 for descending order (Z to A, largest to smallest). Can also be an array constant (e.g., {1, -1}).
[by_col]OptionalFALSEFALSE (or omitted) sorts vertically by row (standard). TRUE sorts horizontally by column.

Single-Column Sort Example

Given employee records in A2:D50 where column A is Name, column B is Department, column C is Tenure, and column D is Salary:

=SORT(A2:D50, 4, -1)

This formula sorts the entire table A2:D50 by column 4 (Salary) in descending order (-1), spilling the ranked roster into the worksheet.


Multi-Level Sorting in SORT Using Array Constants

Many business reports require multi-tiered sorting—for example, grouping employees by Department alphabetically (ascending), and then sorting employees within each department by Salary from highest to lowest (descending).

To execute multi-level sorting within SORT, pass array constants enclosed in curly brackets {} to both sort_index and sort_order:

=SORT(A2:D50, {2, 4}, {1, -1})
Evaluation Breakdown:
Primary Sort Key:   Index 2 (Department)  --> Order:  1 (Ascending / A-to-Z)
Secondary Sort Key: Index 4 (Salary)      --> Order: -1 (Descending / High-to-Low)

Both array constants must match in length: if you supply two column indices in {2, 4}, you must supply two sort orders in {1, -1}. If sort_order is omitted, Excel defaults to ascending order (1) for all specified indices.


Anatomy and Mechanics of SORTBY

While SORT relies on numerical column indices within the source array, SORTBY sorts an array against one or more external criteria ranges or arrays. Its syntax is:

=SORTBY(array, by_array1, [order1], [by_array2], [order2], ...)
ArgumentRequired / OptionalDefault ValueDescription & Rules
arrayRequiredNoneThe range or array to sort and return.
by_array1RequiredNoneThe first range or array vector to sort by. Must have the same number of rows (or columns) as array.
[order1]Optional11 for ascending, -1 for descending.
[by_array2]OptionalNoneThe second criteria vector for secondary sorting.
[order2]Optional11 for ascending, -1 for descending.

The Power of External Criteria Sorting

The defining advantage of SORTBY is that the sort vectors do not need to be included in the returned output.

Suppose a company directory spans A2:D100 (Name in A, Department in B, Tenure in C, Salary in D). An executive dashboard requires a clean list showing only Employee Names (column A), sorted primarily by Department (ascending) and secondarily by Salary (descending).

With SORT, achieving this requires sorting all four columns and then slicing column A using CHOOSECOLS or INDEX. With SORTBY, it is resolved in a single, intuitive expression:

=SORTBY(A2:A100, B2:B100, 1, D2:D100, -1)

Excel reads the name vector A2:A100, pairs each row with its corresponding Department (B2:B100) and Salary (D2:D100), executes the multi-level sort, and outputs only column A.


Comparative Analysis: SORT vs. SORTBY

DimensionSORT FunctionSORTBY Function
Sort Key SpecificationNumeric column/row index within array (e.g., 2 or {2, 4})Cell range or array reference (e.g., B2:B100)
Multi-Level SyntaxArray constants: {2, 4}, {1, -1}Paired arguments: by_array1, order1, by_array2, order2
External VectorsUnsupported (sort key must exist inside array)Fully supported (sort vectors can reside anywhere)
Output SlicingAlways returns all columns of array unless slicedNaturally isolates target columns without extra functions
Horizontal SortingSupported via by_col: TRUESupported when vectors are horizontal rows
Best Used ForReordering complete, self-contained multi-column tablesReturning targeted columns or sorting by calculated metrics

Constructing Dynamic Automated Leaderboards: SORT with FILTER

In financial modeling and operational management, a common requirement is building self-updating leaderboards: extracting top-performing records that satisfy a specific business threshold.

Combining SORT (or SORTBY) with FILTER creates an automated analytical pipeline:

=SORT(FILTER(A2:E50, E2:E50>=100000, "No Qualifiers"), 5, -1)
Execution Pipeline:
Step 1: FILTER(A2:E50, E2:E50>=100000, "No Qualifiers")
        └── Extracts rows where Revenue (col E) >= $100,000.
Step 2: SORT(..., 5, -1)
        └── Takes the filtered result and sorts descending by column 5 (Revenue).
Result: An instantaneous, dynamically updated leaderboard of high-revenue accounts.

To display only the Top 5 accounts from this sorted list, modern Excel users can wrap the formula in TAKE:

=TAKE(SORT(FILTER(A2:E50, E2:E50>=100000), 5, -1), 5)

Whenever transactions update in A2:E50, the leaderboard recalculates, re-filters, re-sorts, and re-spills automatically.


High-Frequency MO-211 Exam Traps

  • Sort Index Exceeds Column Count (#VALUE!): Entering =SORT(A2:C50, 4, 1) produces a #VALUE! error because range A2:C50 contains only 3 columns. The sort_index must be an integer between 1 and the total number of columns in array.
  • Dimension Mismatch in SORTBY (#VALUE!): In =SORTBY(A2:B50, C2:C60, 1), the output array contains 49 rows while the sort vector contains 59 rows. Every by_array argument must have the identical length along the sorting axis as array.
  • Invalid Sort Order Values: Excel requires 1 (ascending) or -1 (descending). Entering 0, FALSE, or letters like "D" triggers formula syntax or calculation errors.
  • Using Column Letters Instead of Indices in SORT: Writing =SORT(A2:D50, B, 1) or =SORT(A2:D50, "B", 1) is invalid. SORT requires numeric indices (e.g., 2). To refer to ranges by column reference, use SORTBY.
  • Unbalanced Multi-Level Arrays: If you provide {1, 2, 3} for sort_index and {1, -1} for sort_order, the third column's sort behavior may fail or default unexpectedly. Always balance index and order arrays.
Test Your Knowledge

An analyst needs to sort a four-column dataset in A2:D100. The data must be sorted primarily by Department (Column 2) in ascending order, and secondarily by Total Sales (Column 4) in descending order. Which formula correctly configures this multi-level sort using the SORT function?

A
B
C
D
Test Your Knowledge

A financial model requires displaying only employee names from column A (A2:A100), sorted primarily by Region in column B (ascending) and secondarily by Performance Score in column E (descending). Which formula achieves this outcome in a single step without extracting unwanted columns?

A
B
C
D
Test Your Knowledge

An analyst enters the formula =SORT(A2:C50, 4, -1) into cell G2. Which error will Excel return upon calculation, and why?

A
B
C
D