Как найти в excel последнюю строчку


Найдем номер строки последней заполненной ячейки в столбце и списке. По номеру строки найдем и само значение.

Рассмотрим диапазон значений, в который регулярно заносятся новые данные.

Диапазон без пропусков и начиная с первой строки

В случае, если в столбце значения вводятся, начиная с первой строки и без пропусков, то определить номер строки последней заполненной ячейки можно формулой:

=СЧЁТЗ(A:A))

Формула работает для числовых и текстовых диапазонов (см.

Файл примера

)

Значение из последней заполненной ячейки в столбце выведем с помощью функции

ИНДЕКС()

:

=ИНДЕКС(A:A;СЧЁТЗ(A:A))

Ссылки на целые столбцы и строки достаточно ресурсоемки и могут замедлить пересчет листа. Если есть уверенность, что при вводе значений пользователь не выйдет за границы определенного диапазона, то лучше указать ссылку на диапазон, а не на столбец. В этом случае формула будет выглядеть так:

=ИНДЕКС(A1:A20;СЧЁТЗ(A1:A20))

Диапазон без пропусков в любом месте листа

Если список, в который вводятся значения расположен в диапазоне

E8:E30

(т.е. не начинается с первой строки), то формулу для определения номера строки последней заполненной ячейки можно записать следующим образом:

=СЧЁТЗ(E9:E30)+СТРОКА(E8)

Формула

СТРОКА(E8)

возвращает номер строки заголовка списка. Значение из последней заполненной ячейки списка выведем с помощью функции

ИНДЕКС()

:

=ИНДЕКС(E9:E30;СЧЁТЗ(E9:E30))

Диапазон с пропусками (числа)

В случае

наличия пропусков

(пустых строк) в столбце, функция

СЧЕТЗ()

будет возвращать неправильный (уменьшенный) номер строки: оно и понятно, ведь эта функция подсчитывает только значения и не учитывает

пустые

ячейки.

Если диапазон заполняется

числовыми

значениями, то для определения номера строки последней заполненной ячейки можно использовать формулу

=ПОИСКПОЗ(1E+306;A:A;1)

. Пустые ячейки и текстовые значения игнорируются.

Так как в качестве просматриваемого массива указан целый столбец (

A:A

), то функция

ПОИСКПОЗ()

вернет номер последней заполненной строки. Функция

ПОИСКПОЗ()

(с третьим параметром =1) находит позицию наибольшего значения, которое меньше или равно значению первого аргумента (1E+306). Правда, для этого требуется, чтобы массив был

отсортирован

по возрастанию. Если он не отсортирован, то эта функция возвращает позицию последней заполненной строки столбца, т.е. то, что нам нужно.

Чтобы вернуть значение в последней заполненной ячейке списка, расположенного в диапазоне

A2:A20

, можно использовать формулу:

=ИНДЕКС(A2:A20;ПОИСКПОЗ(1E+306;A2:A20;1))

Диапазон с пропусками (текст)

В случае необходимости определения номера строки последнего

текстового

значения (также при наличии пропусков), формулу нужно переделать:

=ПОИСКПОЗ(«*»;$A:$A;-1)

Пустые ячейки, числа и текстовое значение

Пустой текст

(«») игнорируются.

Диапазон с пропусками (текст и числа)

Если столбец содержит и

текстовые и числовые значения

, то для определения номера строки последней заполненной ячейки можно предложить универсальное решение:

=МАКС(ЕСЛИОШИБКА(ПОИСКПОЗ(«*»;$A:$A;-1);0); ЕСЛИОШИБКА(ПОИСКПОЗ(1E+306;$A:$A;1);0))

Функция

ЕСЛИОШИБКА()

нужна для подавления ошибки возникающей, если столбец

A

содержит только текстовые или только числовые значения.

Другим универсальным решением является

формула массива

:

=МАКС(СТРОКА(A1:A20)*(A1:A20<>»»))

Или

=МАКС(СТРОКА(A1:A20)*НЕ(ЕПУСТО(A1:A20)))

После ввода

формулы массива

нужно нажать

CTRL + SHIFT + ENTER

. Предполагается, что значения вводятся в диапазон

A1:A20

. Лучше задать фиксированный диапазон для поиска, т.к. использование в

формулах массива

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

Значение из последней заполненной ячейки, в этом случае, выведем с помощью функции

ДВССЫЛ()

:

=ДВССЫЛ(«A»&МАКС(СТРОКА(A1:A20)*(A1:A20<>»»)))

Или

=ДВССЫЛ(«A»&МАКС(СТРОКА(A1:A20)*НЕ(ЕПУСТО(A1:A20))))

Как обычно, после ввода

формулы массива

нужно нажать

CTRL + SHIFT + ENTER

вместо

ENTER

.


СОВЕТ:

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

Советы по построению таблиц

.

При составлении формул в Excel часто возникает необходимость найти последнюю строку или получить последнее значение в столбце таблицы с данными. Здесь следует учитывать несколько условий, поставленных перед поиском: будет ли список значений в столбце неразрывным или содержать пустые ячейки? Какие это значения: текст, числа? От этих факторов зависит тип используемых формул.

Как найти последнюю заполненную строку в столбце таблицы Excel

Ниже на рисунке представлен неотсортированный список фактур. Допустим нам необходимо найти последнюю строку с фактурой в списке номеров фактур. Простым способом поиска последней позиции в столбце является использование функции ИНДЕКС и подсчет всех позиций списка с целью определения номера последней строки.

ИНДЕКС и СЧЁТЗ.

Функция ИНДЕКС использована с одним столбцом требует лишь указать один аргумент с номером строки. Третий необязательный для заполнения аргумент в данной ситуации не используется. Функция СЧЁТЗ используется с целью подсчитывания непустых ячеек в столбце B. Ее итоговый результат вычисления следует увеличить на число +1, так как в первой строке пустая ячейка. Функция ИНДЕКС в данном примере возвращает 12-ую строку в столбце B.

Функция СЧЁТЗ подсчитывает ячейки содержащие значения: числа, текстовые строки, даты и все любые другие значения за исключением пустых ячеек. Если ваши данные содержат пустые ячейки, которые разрывают целостность списков, тогда эта формула не будет возвращать правильных результатов вычисления.



Поиск последнего числа в столбце с пустыми ячейками Excel

Функции ИНДЕКС и СЧЁТЗ прекрасно используются для поиска значений в случае, когда диапазон исходных данных не содержит пустых ячеек и является неразрывным. Если же исходных диапазон ячеек содержит пустые ячейки, а искомыми значениями являются числа, можно воспользоваться функцией ПРОСМОТР с очень большим числовым значением в аргументах. Данная техника применяется с помощью составления следующей формулы:

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

Искомое значение в данной формуле (единица с 308 знаками) – это самое большое число доступное в программе Excel. Так как функция ПРОСМОТР не имела шансов найти большего значения чем искомое, она прекратила свое вычисление на последнем найденном числовом значении, которую и вернула в результат.

Что значит число с буквой E в Excel?

Число такое как, например, 9,99E+307 записано в экспоненциальном формате. Число перед буквой E имеет одну цифру 0-9 и только две цифры после запятой. Число после буквы E значит количество разрядов, на которые следует сместить запятую (307 в данном примере), чтобы получить числовое значение, записанное традиционным способом. Плюс значит, что запятую следует смещать в право, а минус – влево. Например, запись 4,32E-02 означает число, записанное в десятичной дроби 0,0432.

Функция ПРОСМОТР имеет преимущество перед другими функциями в том, что она возвращает последнее число даже тогда, когда ячейки в просматриваемом диапазоне могут быть не только пустыми, но и содержать текстовые строки, коды ошибок или даты.

Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше

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

Чтобы избежать этих проблем, можно найти последнюю ячейку с данными или форматированием на нем, а затем сбросить эту последнюю ячейку, сбросить все форматирование, которое может быть применено в пустых строках или столбцах между данными и последней ячейкой.

Поиск последней ячейки с данными или форматированием на нем

  • Чтобы найти последнюю ячейку с данными или форматированием, щелкните в любом месте на нем и нажмите CTRL+END.

Примечание: Чтобы выбрать последнюю ячейку в строке или столбце, нажмите клавишу END, а затем клавишу СТРЕЛКА ВПРАВО или СТРЕЛКА ВНИЗ.

Очистка всего форматирования между последней ячейкой и данными

  1. Выполните одно из указанных ниже действий.

    • Чтобы выбрать все столбцы справа от последнего столбца с данными, щелкните первый заголовок столбца, нажмите и удерживайте нажатой кнопку CTRL, а затем щелкните заголовки столбцов, которые нужно выбрать.

      Совет: Можно также щелкнуть первый заголовок столбца и нажать CTRL+SHIFT+END.

    • Чтобы выбрать все строки под последней строкой с данными, щелкните заголовок первой строки, нажмите и удерживайте нажатой кнопку CTRL, а затем щелкните заголовки строк, которые нужно выбрать.

      Совет: Можно также щелкнуть заголовок первой строки и нажать CTRL+SHIFT+END.

  2. На вкладке Главная в группе Редактирование щелкните стрелку рядом с кнопкой Очистить Изображение кнопкии выберите очистить все.

  3. Сохраните лист.

  4. Закроем таблицу.

    При повторном открыть книгу последняя ячейка данных должна быть последней ячейкой на этом сайте.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

К началу страницы

Нужна дополнительная помощь?

На чтение 3 мин. Просмотров 13 Опубликовано 20.05.2021

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

Найдите последнюю строку или столбец с данными с помощью кода VBA
Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel


Содержание

  1. Найти последнюю строку или столбец с данными с помощью кода VBA
  2. Найти и выберите последнюю строку или столбец с данными с помощью Kutools for Excel
  3. Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel

Найти последнюю строку или столбец с данными с помощью кода VBA

Большинство из нас может подумать о том, чтобы найти последнюю ячейку, нажав Ctrl + End клавиши, чтобы найти последнюю строку и столбец, но сочетание клавиш не найдет ячейку с точным значением, если некоторые ячейки имеют форматирование ниже диапазона данных. Итак, используйте следующий код VBA:

1 . Активируйте свой рабочий лист, на котором вы хотите определить последнюю строку или столбец с данными.

2 . Удерживая нажатыми клавиши ALT + F11 , откройте окно Microsoft Visual Basic для приложений .

3 . Затем нажмите Insert > Module и вставьте следующий код в окно модуля .

Код VBA: найти последнюю строку с данными

4 . Затем нажмите клавишу F5 , чтобы запустить этот код, и появится окно подсказки, в котором будет указан номер строки используемого диапазона. См. Снимок экрана:

5 . Продолжайте нажимать кнопку OK , на этот раз номер последней строки со значениями был показан, как показано на следующем снимке экрана:

Примечание. Чтобы найти последний столбец с данными, примените этот код:

Код VBA: найти последний столбец с данными


Найти и выберите последнюю строку или столбец с данными с помощью Kutools for Excel

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

Перед применением Kutools for Excel , пожалуйста, сначала загрузите и установите его .

1. Если вы хотите найти и выбрать последнюю строку с данными, нажмите Kutools > Выбрать > Выбрать последнюю ячейку > Последняя строка . См. Снимок экрана:

Примечание : для поиска и выбора последнего столбца с данными нажмите Kutools > Выберите > Выбрать последнюю ячейку > Последний столбец .

Затем последняя строка или столбец с данными на текущем листе найдена и немедленно выбрана.

Если вы хотите получить 30-дневную бесплатную пробную версию этой утилиты, пожалуйста щелкните, чтобы загрузить его , а затем перейдите к применению операции в соответствии с указанными выше шагами.


Найдите и выберите последнюю строку или столбец с данными с помощью Kutools for Excel



Если в вашей компании есть человек, который не пользуется мышью при работе в Excel, то вы наверно замечали, как быстро он выполняет свою работу.

Использование клавиатуры в качестве основного инструмента дает существенную прибавку к скорости работы. Это связано с тем, что наиболее часто используемые команды можно выполнить путем нажатия всего пары клавиш. Также у наших рук есть механическая память, и через некоторое время вы заметите, что вам нужно только подумать, как пальцы уже нажимают нужные клавиши (Вы ведь не задумываетесь, когда печатаете текст — руки сами это делают).

Конечно, полностью отказаться от мышки не получится, да это и не нужно. Например, выбрать рисунок на листе быстрее мышкой, чем перебирать клавиатурой графические объекты. Вы сами для себя определите, какие действия вам быстрее выполнять мышью, а какие с помощью клавиатуры.

Базовые клавиши

Перемещение по одной ячейке. Стрелки вниз, вверх, влево и вправо

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

Перемещение в начало строки. Клавиша Home

Для того чтобы переместиться в начало строки достаточно нажать одну клавишу — Home. Это быстрее чем прокручивать лист мышкой.

Постраничное перемещение по листу Excel. Клавиши Page Up и Page Down

Клавиша Page Up перемещает курсор ровно на одну страницу вверх, а клавиша Page Down – на страницу вниз. Данные клавиши полностью заменяют прокрутку документа скролом мыши и экономят время. Единственное на первый взгляд неудобство — это то, что при медленной прокрутке скролом вы можете более подробно следить за изменениями в тексте не перемещая глаз с одной точки экрана. При использовании клавиш необходимо будет просматривать страницу от верхнего до нижнего края.

Сочетания клавиш для быстрого перемещения по документу

Перемещение курсора в начало и конец документа. Сочетание клавиш Ctrl + Home и Ctrl + End

Для того, чтобы быстро переместиться в начало листа необходимо просто нажать комбинацию клавиш Ctrl + Home.

Аналогично, для быстрого перехода в конец документа — Ctrl + End.

Перемещение по листам книги. Сочетание клавиш Ctrl + Page Up и Ctrl + Page Down

Для перемещения между листами книги также можно использовать клавиатуру. Зажмите клавишу Ctrl и клавишами Page Up или Page Down перемещайтесь на предыдущий или следующий лист.

Перемещение по документам Excel и другим приложениям. Сочетание клавиш Alt + Tab

Данная комбинация клавиш позволяет переключаться между открытыми приложениями. Как правило, у нас открыто множество приложений, но параллельно мы работаем с двумя-тремя из них (это могут быть Excel и Word, Excel и интернет браузер). Сколько времени вы тратите на то, чтобы переключиться с одного на другой. Сочетание клавиш Alt + Tab позволяет мгновенно перейти к предыдущему документу с котором вы работали. Если необходимо перейти к другому документу, то удерживая клавишу Alt, нажимайте Tab до тех пор, пока не перейдете к нужному документу.

Навигация внутри таблицы и прочие методы перемещения

Быстрое перемещение по таблице. Сочетание клавиши Ctrl и стрелок вверх, вниз, влево и вправо

С помощью клавиатуры гораздо быстрее и удобнее перемещаться внутри таблицы. Для этого используется комбинация клавиши Ctrl и клавиш со стрелками.

Более подробно рассмотрим как работает сочетание клавиш Ctrl + Вниз, так как сочетание клавиши Ctrl с другими стрелками меняет только направление перемещения курсора.

Если курсор установлен на ячейке, содержащей данные, то комбинация клавиш Ctrl + Вниз переместит его вниз по столбцу до последней непустой ячейки. Если же курсор изначально был установлен в пустой ячейке, то сочетание клавиш Ctrl + Вниз поместит его вниз до первой непустой ячейки столбца.

Как это можно использовать: Во-первых, можно быстро переместиться в конец или начало таблицы по полностью заполненному столбцу. Во-вторых, очень удобно найти ячейку, на которой вы остановились, заполняя данные.

Вызов окна перехода. Сочетание клавиш Ctrl + G

С помощью диалогового окна «переход» легко перейти к именованной ячейке/диапазону или умной таблице. Для вызова этого окна можно воспользоваться комбинацией клавиш Ctrl + G или клавишей F5. Для выбора объекта, к которому вы хотите перейти также можно использовать клавиатуру: нажмите Tab и стрелками вверх и вниз выберите переменную к которой хотите перейти.

Использование окна поиска для перехода к нужной ячейки. Сочетание клавиш Ctrl + F

Очень часто, вместо того чтобы прокручивать скролом мышки документ или перебирать страницы клавишами, проще перейти к нужному место путем поиска. Для того чтобы быстро вызвать окно поиска пользуйтесь сочетанием клавиш Ctrl + F (для запоминания F — от слова Find — поиск).

Последняя заполненная ячейка в EXCEL

Рассмотрим диапазон значений, в который регулярно заносятся новые данные.

Диапазон без пропусков и начиная с первой строки

В случае, если в столбце значения вводятся, начиная с первой строки и без пропусков, то определить номер строки последней заполненной ячейки можно формулой: =СЧЁТЗ(A:A))

Формула работает для числовых и текстовых диапазонов (см. Файл примера )

Значение из последней заполненной ячейки в столбце выведем с помощью функции ИНДЕКС() : =ИНДЕКС(A:A;СЧЁТЗ(A:A))

Ссылки на целые столбцы и строки достаточно ресурсоемки и могут замедлить пересчет листа. Если есть уверенность, что при вводе значений пользователь не выйдет за границы определенного диапазона, то лучше указать ссылку на диапазон, а не на столбец. В этом случае формула будет выглядеть так: =ИНДЕКС(A1:A20;СЧЁТЗ(A1:A20))

Диапазон без пропусков в любом месте листа

Если список, в который вводятся значения расположен в диапазоне E8:E30 (т.е. не начинается с первой строки), то формулу для определения номера строки последней заполненной ячейки можно записать следующим образом: =СЧЁТЗ(E9:E30)+СТРОКА(E8)

Формула СТРОКА(E8) возвращает номер строки заголовка списка. Значение из последней заполненной ячейки списка выведем с помощью функции ИНДЕКС() : =ИНДЕКС(E9:E30;СЧЁТЗ(E9:E30))

Диапазон с пропусками (числа)

В случае наличия пропусков (пустых строк) в столбце, функция СЧЕТЗ() будет возвращать неправильный (уменьшенный) номер строки: оно и понятно, ведь эта функция подсчитывает только значения и не учитывает пустые ячейки.

Если диапазон заполняется числовыми значениями, то для определения номера строки последней заполненной ячейки можно использовать формулу =ПОИСКПОЗ(1E+306;A:A;1) . Пустые ячейки и текстовые значения игнорируются.

Так как в качестве просматриваемого массива указан целый столбец ( A:A ), то функция ПОИСКПОЗ() вернет номер последней заполненной строки. Функция ПОИСКПОЗ() (с третьим параметром =1) находит позицию наибольшего значения, которое меньше или равно значению первого аргумента (1E+306). Правда, для этого требуется, чтобы массив был отсортирован по возрастанию. Если он не отсортирован, то эта функция возвращает позицию последней заполненной строки столбца, т.е. то, что нам нужно.

Чтобы вернуть значение в последней заполненной ячейке списка, расположенного в диапазоне A2:A20 , можно использовать формулу: =ИНДЕКС(A2:A20;ПОИСКПОЗ(1E+306;A2:A20;1))

Диапазон с пропусками (текст)

В случае необходимости определения номера строки последнего текстового значения (также при наличии пропусков), формулу нужно переделать: =ПОИСКПОЗ(«*»;$A:$A;-1)

Пустые ячейки, числа и текстовое значение Пустой текст («») игнорируются.

Диапазон с пропусками (текст и числа)

Если столбец содержит и текстовые и числовые значения , то для определения номера строки последней заполненной ячейки можно предложить универсальное решение: =МАКС(ЕСЛИОШИБКА(ПОИСКПОЗ(«*»;$A:$A;-1);0); ЕСЛИОШИБКА(ПОИСКПОЗ(1E+306;$A:$A;1);0))

Функция ЕСЛИОШИБКА() нужна для подавления ошибки возникающей, если столбец A содержит только текстовые или только числовые значения.

Другим универсальным решением является формула массива : =МАКС(СТРОКА(A1:A20)*(A1:A20«»))

После ввода формулы массива нужно нажать CTRL + SHIFT + ENTER . Предполагается, что значения вводятся в диапазон A1:A20 . Лучше задать фиксированный диапазон для поиска, т.к. использование в формулах массива ссылок на целые строки или столбцы является достаточно ресурсоемкой задачей.

Значение из последней заполненной ячейки, в этом случае, выведем с помощью функции ДВССЫЛ() : =ДВССЫЛ(«A»&МАКС(СТРОКА(A1:A20)*(A1:A20«»)))

Как обычно, после ввода формулы массива нужно нажать CTRL + SHIFT + ENTER вместо ENTER .

СОВЕТ: Как видно, наличие пропусков в диапазоне существенно усложняет подсчет. Поэтому имеет смысл при заполнении и проектировании таблиц придерживаться правил приведенных в статье Советы по построению таблиц .

Как перейти на последнюю заполненную строку в excel

Как перейти на последнюю заполненную строку в excel

x

x

x

Как быстро перейти к концу столбца или строки в Excel?

Перейти к последнему столбцу или строке в используемом диапазоне с помощью Kutools for Excel хорошая идея3

стрелка синий правый пузырьПерейти к концу столбца или строки в активном диапазоне с помощью ярлыков

Щелкните любые данные столбца, который вы хотите переместить в конец, и удерживайте Ctrl нажмите и нажмите док стрелка внизКлавиша позволяет быстро перейти к концу столбца в диапазоне данных.
док перейти в конец 1

Если вы хотите перейти в конец строки в активном диапазоне данных, удерживайте Ctrl нажмите и нажмите документ стрелка вправо.

Чаевые: Если между данными есть пустая строка или столбец, они перемещаются только к последним данным над первой пустой строкой или столбцом. Смотрите скриншот:
док перейти в конец 2

стрелка синий правый пузырьПерейти к последнему столбцу или строке в используемом диапазоне с помощью Kutools for Excel

Включите лист, который вы хотите разместить в последнем столбце или строке в используемом диапазоне, щелкните Kutools > Выберите > Выбрать последнюю ячейку > Выбрать последнюю ячейку/Последняя строка/Последний столбец. Смотрите скриншот:
док перейти в конец 3

We use  Range.SpecialCells() method in the below VBA Code to find and return details of last used row, column, and cell in a worksheet.

Sample Data:

Sample Data

Syntax:

expression.SpecialCells (Type, Value)

Eg: To return the last used cell address in an activesheet. ActiveSheet.Range(“A1”).SpecialCells(xlCellTypeLastCell).Address

VBA Code:

Declaring Variables:

Variable Data Type Comments
LastRow Long Find and store last used row
LastCol Long store last used column
LastCell String store last used cell address
'Variable Declaration

Dim LastRow As Long, LastCol As Long, LastCell As String

Use SpecialCells function to find last used row/column/cell 

'Find Last Used Row
LastRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row

'Find Last Used Column
LastCol = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Column

'Find Last Used Cell
LastCell = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Address

Concatenate all three variables (LastRow/LastCol/LastCell), add a new line between variables use Chr(10).   Show the final output in an Excel Message box.

'Display the last used row/column/cell

MsgBox "Last Used Row : " & LastRow & Chr(10) & "Last Used Column : " & LastCol & Chr(10) & "Last Used Cell : " & LastCell

Implementation:

Follow the below steps to find the Last Used Row and Last Used Column in Excel VBA

Step 1: Add a shape (Find Last Row/Column/Cell) on your worksheet.  

Step 2: Right-click on “Find Last Row/Column/Cell” and “Assign Macro..”

Step 3: Select “findLastUsedCell”, you can see a list of macros if available in your workbook

Step 4: Save your excel file as “Excel Macro-Enabled Workbook” *.xlsm

Step 5: Click “Find Last Row/Column/Cell” to execute the VBA code.  Code will popup below output for the above given example (Output).

Output:

Here’s a solution for finding the last row, last column, or last cell. It addresses the A1 R1C1 Reference Style dilemma for the column it finds. Wish I could give credit, but can’t find/remember where I got it from, so «Thanks!» to whoever it was that posted the original code somewhere out there.

Sub Macro1
    Sheets("Sheet1").Select
    MsgBox "The last row found is: " & Last(1, ActiveSheet.Cells)
    MsgBox "The last column (R1C1) found is: " & Last(2, ActiveSheet.Cells)
    MsgBox "The last cell found is: " & Last(3, ActiveSheet.Cells)
    MsgBox "The last column (A1) found is: " & Last(4, ActiveSheet.Cells)
End Sub

Function Last(choice As Integer, rng As Range)
' 1 = last row
' 2 = last column (R1C1)
' 3 = last cell
' 4 = last column (A1)
    Dim lrw As Long
    Dim lcol As Integer

    Select Case choice
    Case 1:
        On Error Resume Next
        Last = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        LookAt:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Row
        On Error GoTo 0

    Case 2:
        On Error Resume Next
        Last = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        LookAt:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Column
        On Error GoTo 0

    Case 3:
        On Error Resume Next
        lrw = rng.Find(What:="*", _
                       After:=rng.Cells(1), _
                       LookAt:=xlPart, _
                       LookIn:=xlFormulas, _
                       SearchOrder:=xlByRows, _
                       SearchDirection:=xlPrevious, _
                       MatchCase:=False).Row
        lcol = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        LookAt:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Column
        Last = Cells(lrw, lcol).Address(False, False)
        If Err.Number > 0 Then
            Last = rng.Cells(1).Address(False, False)
            Err.Clear
        End If
        On Error GoTo 0
    Case 4:
        On Error Resume Next
        Last = rng.Find(What:="*", _
                        After:=rng.Cells(1), _
                        LookAt:=xlPart, _
                        LookIn:=xlFormulas, _
                        SearchOrder:=xlByColumns, _
                        SearchDirection:=xlPrevious, _
                        MatchCase:=False).Column
        On Error GoTo 0
        Last = R1C1converter("R1C" & Last, 1)
        For i = 1 To Len(Last)
            s = Mid(Last, i, 1)
            If Not s Like "#" Then s1 = s1 & s
        Next i
        Last = s1

    End Select

End Function

Function R1C1converter(Address As String, Optional R1C1_output As Integer, Optional RefCell As Range) As String
    'Converts input address to either A1 or R1C1 style reference relative to RefCell
    'If R1C1_output is xlR1C1, then result is R1C1 style reference.
    'If R1C1_output is xlA1 (or missing), then return A1 style reference.
    'If RefCell is missing, then the address is relative to the active cell
    'If there is an error in conversion, the function returns the input Address string
    Dim x As Variant
    If RefCell Is Nothing Then Set RefCell = ActiveCell
    If R1C1_output = xlR1C1 Then
        x = Application.ConvertFormula(Address, xlA1, xlR1C1, , RefCell) 'Convert A1 to R1C1
    Else
        x = Application.ConvertFormula(Address, xlR1C1, xlA1, , RefCell) 'Convert R1C1 to A1
    End If
    If IsError(x) Then
        R1C1converter = Address
    Else
        'If input address is A1 reference and A1 is requested output, then Application.ConvertFormula
        'surrounds the address in single quotes.
        If Right(x, 1) = "'" Then
            R1C1converter = Mid(x, 2, Len(x) - 2)
        Else
            x = Application.Substitute(x, "$", "")
            R1C1converter = x
        End If
    End If
End Function

Понравилась статья? Поделить с друзьями:
  • Как найти в папке все файлы формата ms word
  • Как найти в excel перевести
  • Как найти в excel одинаковые строчки
  • Как найти в нескольких файлах excel
  • Как найти в excel нужный нам лист