No Image

Excel vba последнее значение в столбце

СОДЕРЖАНИЕ
674 просмотров
10 марта 2020

Описание функции

Функция =ПОСЛЕДНЕЕВСТОЛБЦЕ(ЯЧЕЙКА) имеет один аргумент.

  • ЯЧЕЙКА – ссылка на любую ячейку из столбца в котором необходимо найти последнее заполненное значение.

Пример

Поиск последнего значения в столбце.

Код на VBA

Вы можете самостоятельно внедрить код ниже в Вашу книгу или скачать всю надстройку по ссылке ниже.

Поиск номера последней заполненной строки с помощью кода VBA Excel для таблиц, расположенных как в верхнем левом углу, так и в любом месте рабочего листа.

Номер последней заполненной строки в таблице Excel обычно используется в коде VBA для определения следующей за ней первой пустой строки для добавления новой записи. А также для задания интервала для поиска и обработки информации с помощью цикла For. Next (указание границ обрабатываемого диапазона).

Переменную, которой присваивается номер последней строки, следует объявлять как Long или Variant, например: Dim PosStr As Long . В современных версиях Excel количество строк на рабочем листе превышает максимальное значение типа данных Integer.

Таблица в верхнем левом углу

В первую очередь рассмотрим все доступные варианты поиска номера последней заполненной строки для таблиц, расположенных в верхнем левом углу рабочего листа. Такие таблицы обычно представляют собой простые базы данных в Excel, или, как их еще называют, наборы записей.

Пример таблицы с набором данных в Excel

Вариант 1
Основная формула для поиска последней строки в такой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(1, 1).CurrentRegion.Rows.Count

Вариант 2
Ниже таблицы не должно быть никаких записей:
PosStr = ActiveSheet.UsedRange.Rows.Count

Вариант 3
В первом столбце таблицы не должно быть пропусков, а также в таблице должно быть не менее двух заполненных строк, включая строку заголовков:
PosStr = Cells(1, 1).End(xlDown).Row

Читайте также:  Mysql int 11 максимальное значение

Вариант 4
В первой колонке рабочего листа внутри таблицы не должно быть пропусков, а ниже таблицы в первой колонке не должно быть других заполненных ячеек:
PosStr = WorksheetFunction.CountA(Range("A:A"))

Вариант 5
Ниже таблицы не должно быть никаких записей:
PosStr = Cells.SpecialCells(xlLastCell).Row

Последняя строка любой таблицы

Последнюю заполненную строку для любой таблицы будем искать, отталкиваясь от ее верхней левой ячейки: Cells(a, b) .

Вариант 1
Основная формула для поиска последней строки в любой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(a, b).CurrentRegion.Cells(Cells(a, b).CurrentRegion.Cells.Count).Row

Вариант 2
Дополнительная формула с условием, что в первом столбце таблицы нет пустых ячеек:
PosStr = Cells(a, b).End(xlDown).Row

Если у вас на рабочем листе Excel есть записи вне таблиц, следите за тем, чтобы таблицы были окружены пустыми ячейками или пустыми ячейками и границами листа. Тогда не будет случайно внесенных заметок, примыкающих к таблицам, которые могут отрицательно повлиять на точность вычисления номера последней строки из кода VBA.

VBA Excel. Номер последней заполненной строки : 2 комментария

К сожалению, во всех приведенных методах непонятно, учитывается ли фильтр? То есть учитываются ли скрытые ячейки?

Добрый день, Николай!
Скрытые строки в центре таблицы не влияют на результат. Если в скрытый диапазон входит последняя строка, результат будет зависеть от примененного выражения.

В зависимости от того, какой результат вам нужен при скрытой последней строке, выбирайте подходящее выражение с помощью следующего теста:

пример

В этом примере мы рассмотрим метод возврата последней непустой строки в столбец для набора данных.

Этот метод будет работать независимо от пустых областей в наборе данных.

Однако следует соблюдать осторожность, если задействованы объединенные ячейки , поскольку метод End будет «остановлен» против объединенной области, возвращая первую ячейку объединенной области.

Читайте также:  Intel core i3 7100u игры

Кроме того, непустые ячейки в скрытых строках не будут учитываться.

Чтобы устранить указанные выше ограничения, строка:
LastRow = wS.Cells(wS.Rows.Count, "A").End(xlUp).Row

могут быть заменены на:

для последнего использованного ряда "Sheet1" :
LastRow = wS.UsedRange.Row – 1 + wS.UsedRange.Rows.Count .

для последней непустой ячейки столбца "A" в "Sheet1" :

Комментировать
674 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector