Получить последнюю строку столбца в Excel, без VBA - PullRequest
0 голосов
/ 18 октября 2018

В общем, получение последней строки данного столбца в Excel легко выполняется с помощью пользовательской функции в 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

Для последней строки есть две формулы Excel, которые я нашел до сих пор.:

  • =SUMPRODUCT(MAX((A:A<>"")*ROW(A:A)))
  • =MAX(IFERROR(MATCH(E1+99,A:A),0),IFERROR(MATCH("zzz",A:A),0))

Проблема с ними в том, что первое не работает, еслив диапазоне имеется ошибка, и вторая возвращает не настоящую последнюю строку, если это ошибка, а последнюю строку без ошибок, возвращая, таким образом, 6, а не 7:

enter image description here

Вопрос в том, как получить формулу, которая возвращает 7, так как это последняя строка в столбце A, которая используется?Хотя это ошибка.Без VBA.

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Попробуйте следующую формулу:

=SUMPRODUCT((MAX(IFERROR(((A:A)<>"");TRUE)*ROW(A:A))))

Помните , что эту формулу необходимо вводить с помощью control + shift + введите .

(A:A) <> "": проверяет наличие непустых ячеек и возвращает TRUE, если не пусто.
(IFERROR(((A:A)<>"");TRUE): проверяет непустые ячейки и возвращает TRUE, если не пусто, если обнаружена ошибка, возвращается также TRUE.

Остальная часть кода работает как прежде.

Дополнительная информация о элементе управления + shift + введите комбинацию можно найти здесь: Рекомендации и примеры формул массива

0 голосов
/ 18 октября 2018

Этот (без формулы массива)

=LOOKUP(2,1/(NOT(ISBLANK(A:A))),ROW(A:A)) 

Как это работает?

  1. NOT(ISBLANK(A:A)) возвращает массив Trueи False
  2. 1/(NOT(ISBLANK(A:A))), затем 1, деленный на этот массив, приводит к другому массиву 1 или #DIV/0!, который используется как lookup_vector
  3. Мы используем 2 какlookup_value, который не может быть найден, поскольку наибольшее значение в lookup_array равно 1, поэтому поиск будет соответствовать последнему 1 в массиве.
  4. Как result_vector, мы используем ROW(A:A) дляполучить номер строки последней использованной ячейки
    (альтернативно используйте A:A, чтобы получить значение вместо номера строки).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...