The heart of this formula is the INDEX function, which is given the list as the array argument:
The second part of the formula is an expression that works out the correct row number as the formula is copied down:
- COUNTA(list) returns the count of non-blank items in the list (10 in the example)
- ROW(list) returns the starting row number of list (5 in the example)
- ROW() returns the row number the formula resides in
The result of this expression is a single number starting at 10, and ending at 1 as the formula is copied down. The first formula returns the 10th item in the list, the second formula returns the 9th item in the list, and so on:
=INDEX(list,10+5-5,1) // item 10 =INDEX(list,10+5-6,1) // item 9 =INDEX(list,10+5-7,1) // item 8 etc.
With Dynamic Arrays
Excel 365 supports dynamic array formulas, which can used to create a simpler and more efficient formula. The SORTBY function can perform a "reverse sort" with help from the SEQUENCE function. The formula in D5 should be:
Inside the SEQUENCE function, the ROWS function is used twice to get a count of rows in the range. The first count is used as the rows argument in sequence, the second count is used for the start argument. The step argument is supplied as -1, so that the array returned by sequence starts at 10 and counts down to 1. The result is delivered to SORTBY as by_array1:
With this configuration, SORTBY sorts the named range list in reverse order and the results spill into the range D5:D14.