## Summary

To reverse a list (i.e. put the items in a list or column in reverse order) you can use a formula based on the INDEX, COUNTA, and ROW functions. In the example shown, the formula in D5, copied down, is:

``````=INDEX(list,COUNTA(list)+ROW(list)-ROW(),1)
``````

The name "list" is a named range B5:B14. Named ranges are absolute references by default, so be sure to use an absolute reference if not using a named range.

## Generic formula

``=INDEX(list,COUNTA(list)+ROW(list)-ROW(),1)``

## Explanation

The heart of this formula is the INDEX function, which is given the list as the array argument:

``````=INDEX(list
``````

The second part of the formula is an expression that works out the correct row number as the formula is copied down:

``````COUNTA(list)+ROW(list)-ROW()
``````
1. COUNTA(list) returns the count of non-blank items in the list (10 in the example)
2. ROW(list) returns the starting row number of list (5 in the example)
3. 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:

``````=SORTBY(list,SEQUENCE(ROWS(list),1,ROWS(list),-1))
``````

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:

``````=SORTBY(list,{10;9;8;7;6;5;4;3;2;1})
``````

With this configuration, SORTBY sorts the named range list in reverse order and the results spill into the range D5:D14.

Author

### 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.