## 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()
```

- 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:

```
=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.