In general, getting the last row of a given column in Excel is easily done with a User-Defined Function in VBA:
Function lastRow(wsName As String, Optional columnToCheck As Long = 1) As Long
Dim ws As Worksheet
Set ws = Worksheets(wsName)
lastRow = ws.Cells(ws.Rows.Count, columnToCheck).End(xlUp).Row
End Function
For the last row there are two excel formulas I found so far:
=SUMPRODUCT(MAX((A:A<>"")*ROW(A:A)))
=MAX(IFERROR(MATCH(E1+99,A:A),0),IFERROR(MATCH("zzz",A:A),0))
The problem with them is that the first does not work, if there is an error in the range and the second does not return the real last row, if it is an error, but the last non-error row, thus returning 6 and not 7:
The question is how to get a formula that returns 7, as this is the last row in column A that is used? Although, it is an error. Without VBA.
=MAX(IFERROR(A:A<>"",1)*ROW(A:A))
but it is an array formula. – Scott Craner