I have the following Excel spreadsheet:
A B C D E F
1 | |
You can use the following array formula:
= ADDRESS(ROW(B2),MAX(COLUMN(2:2)*NOT(ISBLANK(2:2))))
This returns the address of the last non-empty cell in the 2nd row.
Note this is an array formula, so you muse press Ctrl+Shift+Enter on the keyboard when entering this formula rather than just pressing Enter.
I agree with @ScottCraner that returning the address usually isn't useful. If you are planning on using this value, as part of another formula, you should not do this:
= INDIRECT(ADDRESS(ROW(B2),MAX(COLUMN(2:2)*NOT(ISBLANK(2:2)))))
Instead, skip using INDIRECT
and ADDRESS
altogether and instead use INDEX
to get the value in that cell, i.e.
= INDEX(2:2,MAX(COLUMN(2:2)*NOT(ISBLANK(2:2)))))
Consider:
=ADDRESS(2,MATCH(TRUE,INDEX(ISBLANK(2:2),0,0),0)-1)
NOTE:
The last restriction is important because the formula relies on finding the first empty in the row and taking one step back!
Use:
=ADDRESS(ROW(B2),MATCH(1E+99,$A2:$F2),4,1)
Which will return the last cell with a number in that range.
For text and numbers:
=ADDRESS(ROW(B2),MAX(IFERROR(MATCH(1E+99,$A2:$F2),0),IFERROR(MATCH("zzz",$A2:$F2),0)),4,1)