Я думаю, что ответ от W5ALIVE наиболее близок к тому, что я использую, чтобы найти последнюю строку данных в столбце. Предполагая, что я ищу последнюю строку с данными в столбце A, я бы использовал следующее для более общего поиска:
=MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0))
Первый MATCH найдет последнюю текстовую ячейку, а второй MATCH найдет последнюю числовую ячейку. Функция IFERROR возвращает ноль, если первое совпадение находит все числовые ячейки или если второе совпадение находит все текстовые ячейки.
По сути, это небольшое изменение смешанного текстового и числового решения W5ALIVE.
При тестировании времени это было значительно быстрее, чем эквивалентные вариации LOOKUP.
Чтобы вернуть действительное значение этой последней ячейки, я предпочитаю использовать косвенную ссылку на ячейку, например:
=INDIRECT("A"&MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0)))
Метод, предлагаемый sancho.s, возможно, более чистый вариант, но я бы изменил часть, которая находит номер строки, следующим образом:
=INDEX(MAX((A:A<>"")*(ROW(A:A))),1)
единственное отличие состоит в том, что ", 1" возвращает первое значение, а ", 0" возвращает весь массив значений (все, кроме одного, которые не нужны). Я все еще склоняюсь к тому, чтобы адресовать ячейку функции индекса там, другими словами, возвращая значение ячейки с помощью:
=INDIRECT("A"&INDEX(MAX((A:A<>"")*(ROW(A:A))),1))
Отличная тема!