Note: this is an array formula and must be entered with Control+Shift+Enter. In the example shown, the formula in E5 is:

### Last *relative* position, not row on worksheet

When constructing more advanced formulas, it’s often necessary to figure out the last location of data in a list. Depending on the data, this could be the last row with data, the last column with data, or the intersection of both. We want the last *relative position* inside a given range not the row number on the worksheet:

Working from the inside out, the lookup array inside MATCH is constructed like this: Note: all values in the array are either 1 or the #DIV/0! error. MATCH is then set to match the value 2 in “approximate match mode”, by omitting the 3rd argument is omitted. Because the lookup value of 2 will never be found, MATCH will always find the last 1 in the lookup array, which corresponds to the last non-empty cell. This approach will work with any kind of data, including numbers, text, dates, etc. It also works with null text strings that are returned by formulas like this:

### Dynamic range

You can use this formula to create a dynamic range with other functions like INDEX and OFFSET. See links below for examples and explanation:

Dynamic range with INDEX and COUNTA Dynamic range with OFFSET and COUNTA

Inspiration for this article came from Mike Girvin’s excellent book Control + Shift + Enter, where Mike does a great job explaining the concept of “last relative position”.

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