Самая последняя ячейка excel

Простой парень из Оклахомы Хантер Хоббс положил палец на клавишу «вниз» на клавиатуре и за девять часов дошел туда, где бывал далеко не всякий пользователь — до последней строки в таблице XLC.

Сколько нужно времени, чтобы дойти до последней строки в MS Excel

Первая ячейка последней строки в MS Excel имеет адрес (A1048576), то есть находится в миллион сорок восемь тысяч пятьсот семьдесят шестой строке таблицы. Попасть туда можно, нажав Ctrl+»вниз», но некоторые люди не ищут легких путей.

Хантер Хоббс потратил на путешествие 9 часов 36 минут и 10 секунд. Будучи честным парнем, он не пользовался никакими уловками, не клал на клавиатуру тяжелых предметов и не просил друзей его подменить. Все девять часов он провел на стуле перед компьютером, читая биографию Шварценеггера и инструкцию по выживанию в дикой природе, слушая музыку и думая о разном.

Кстати, если бы Хоббс пошел по таблице не вниз, а вправо, он дошел бы до 16 385-го столбца XFD, и потратил бы на это меньше десяти минут.

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.

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

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

Хитрости »

1 Май 2011              43492 просмотров


Как получить последннюю заполненную ячейку формулой?

Очень часто при работе с большими таблицами возникает вопрос: как узнать последнюю заполненную ячейку в столбце? Обычно это необходимо для того, чтобы суммировать или вычислять среднее только в пределах заданной таблицы, без учета пустых строк, т.к. в случае с вычислением среднего пустые строки могут повлиять на расчеты. Так же определить последнюю ячейку формулой бывает необходимо, если в отдельную ячейку в начале таблицы надо выводить последнее записанное в таблицу значение.
По сути способов узнать последнюю заполненную ячейку формулами не так много. Я в этой статье покажу два варианта: в первом формула проще для понимания, но менее универсальна в использовании — она требует точно знать данные какого типа хранятся в столбце: числа или текст, т.к. ориентируется исключительно на тип данных. Вторая формула более универсальна, но может дольше работать.
Формула ниже по сути будет отбирать только числа и вернет номер самой нижней строки, в которой расположено любое число, даже если это нуль:
=ПОИСКПОЗ(3E+307;A1:A100)
=MATCH(3E+307,A1:A100)
А эта формула вернет номер строки с последней ячейкой, в которой записан любой текст
=ПОИСКПОЗ(«яяя»;A1:A100)
=MATCH(«яяя»,A1:A100)
Принцип работы этих формул основан на последнем аргументе функции ПОИСКПОЗ(MATCH) — интервальный просмотр(подробнее про этот аргумент можно узнать из этой статьи — ВПР и интервальный просмотр(range_lookup)). Если его не указывать, то принимается значения по умолчанию для этого аргумента. По умолчанию он равен 1, что означает искать наибольшее значение, которое меньше или равно искомому. Для «правильной» работы с этим параметром справка Excel рекомендует отсортировать по возрастанию массив значений, в которых осуществляется поиск искомого значения. Но в нашем случае сортировка как раз не нужна. Происходит следующее: в случае с числом мы задает максимально возможное число(3E+307), которого заведомо в искомых значениях быть не может. ПОИСКПОЗ сверяет каждое значение с этим числом. Определяет, что значение в массиве меньше искомого(но не равно ему!) и запоминает его позицию. Но т.к. ПОИСКПОЗ стремится найти самый подходящий вариант — то просматривает значения дальше, предполагая, что массив отсортирован по возрастанию и дальше пойдут значения ЕЩЕ БОЛЬШЕ предыдущего и там возможно есть значение, равное искомому. Но наш массив не отсортирован и значения там расположены абы как. Да и значения там все меньше указанного. В результате ПОИСКПОЗ доходит до последнего числа в указанном массиве и возвращает именно его позицию, т.к. дальше искать нечего и ПОИСКПОЗ считает, что это максимально подходящее число. Опять же потому, что считает, что значения у нас отсортированы.
Тоже самое и с текстом, только тут мы задаем текст «яяя», который в бинарной сетке будет в самом низу, т.к. буква «я» имеет самый большой числовой код. А три этих буквы подряд дают по сути «самый большой текст».

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

  1. =МАКС(ПОИСКПОЗ({«яяя»;3E+307};A1:A100))
    =MAX(MATCH({«яяя»,3E+307},A1:A100))
  2. =ПРОСМОТР(2;1/(A1:A100<>»»);СТРОКА(A1:A100))
    =LOOKUP(2,1/(A1:A100<>»»),ROW(A1:A100))

Первая формула вводится как формула массива(ввод формулы в ячейку завершается нажатием не просто Enter, а сочетанием клавиш Ctrl+Shift+Enter). Но есть и еще один недостаток: если в столбце нет какого-либо типа данных — формула вернет #Н/Д. Обхитрить можно, если захватить в расчет заголовок, в котором будет текст или число, в зависимости от того, какие данные предположительно могут отсутствовать. Или сделать двойной заголовок — в одном число, в другом текст. Основной принцип работы ПОИСКПОЗ в данном случае описан выше. Могу лишь добавить, что ввод её как формулу массива заставляет формулу искать как позицию самого дальнего числа, так и позицию самого дальнего текста. А функция МАКС(MAX) отбирает из найденных двух позиций максимальное значение.

Вторая формула вводится в ячейку обычным методом и вроде как не имеет никаких подводных камней. Кроме одного: не стоит указывать в качестве диапазона ВЕСЬ СТОЛБЕЦ с данными — формула может очень долго пересчитываться. Особенно это сказывается в файлах версии 2007 Excel, где строк больше миллиона. Предыдущие формулы лишены этого недостатка. Хотя я в любом случае советовал бы указывать явно диапазон «с запасом».
Принцип её работы похож на ПОИСКПОЗ с небольшими дополнениями:

  • A1:A100<>»» — здесь идет сравнение каждого значения в указанном диапазоне и если ячейка не пустая — возвращается ИСТИНА(TRUE).
  • 1/(A1:A100<>»») — здесь единица делится на полученные значения ИСТИНА(TRUE). Звучит как бред, но. Для Excel ИСТИНА это 1, а ЛОЖЬ — 0. Таким образом мы получаем массив значений 1 и #ДЕЛ/0(#DIV/0). Т.е. максимальное число в массиве у нас — 1. А принцип работы функции ПРОСМОТР(LOOKUP) очень похож на ПОИСКПОЗ, только она всегда стремиться найти наибольшее подходящее значение, меньшее или равное искомому. А в качестве искомого мы задаем 2, т.е. оно заведомо больше любого значения в массиве для поиска: =ПРОСМОТР(2;1/(A1:A100<>»»)

Таким образом ПРОСМОТР всегда будет нам возвращать позицию последней заполненной ячейки. Последний аргумент функции ПРОСМОТР — массив, равный по размеру просматриваемому(A1:A100), из которого будет возвращено значение. Мы задаем в качестве этого массива значений для возврата массив номеров строк: СТРОКА(A1:A100). Т.е. если в массиве A1:A100 последнее значение будет в ячейке A9, то ПРОСМОТР вернет значение для СТРОКА(A9).

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


Вот один из примеров, как можно применить определение последней ячейки в реальных формулах. Например, вычисление среднего значения:

=СРЗНАЧ(A2:ИНДЕКС(A1:A100;ПОИСКПОЗ(9E+307;A1:A100)))

Числовые данные начинаются с ячейки

A2

. В A1 заголовок, а где заканчиваются данные неизвестно — они постоянно изменяются: удаляются, дополняются.
В данном случае мы первой ячейкой указываем

A2

— начало числовых данных. А вот далее уже идет вычисление последней ячейки:

ПОИСКПОЗ(9E+307;A1:A100)

В данном случае можно применить поиск последней ячейки именно с числом, т.к. СРЗНАЧ(AVERAGE) в любом случае игнорирует текст и лишние ячейки нам ни к чему. ПОИСКПОЗ(MATCH) возвращает номер последней ячейки в диапазоне

A1:A100

. Но чтобы получить именно ссылку на эту ячейку, а не просто её строку мы используем ИНДЕКС(INDEX):

ИНДЕКС(A1:A100;ПОИСКПОЗ(9E+307;A1:A100))

Т.е. по шагам формулу можно представить так:

=СРЗНАЧ(A2:ИНДЕКС(A1:A100;ПОИСКПОЗ(9E+307;A1:A100))) =>
=СРЗНАЧ(A2:ИНДЕКС(A1:A100;9)) =>
=СРЗНАЧ(A2:A9) =>
4,5


В приложенном к теме примере записаны все приведенные формулы, а так же пара примеров того, как эти формулы можно использовать в других формулах для определения конца диапазона.

Скачать пример

  Tips_General_Last_Cell_Formula.xls (38,5 KiB, 3 350 скачиваний)

Также см.:
Как определить последнюю ячейку на листе через VBA?
Что такое формула массива


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика


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

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

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

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

=СЧЁТЗ(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

.


СОВЕТ:

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

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

.

How to find the last column in a row that has data. This includes selecting that column or a cell in it, returning the column number, and getting data from that column.

Sections:

Find the Last Column with Data

Select the Last Cell

Select the Entire Column

Get the Number of the Last Column

Get the Data from the Last Column

Notes

Find the Last Column with Data

Cells(1, Columns.Count).End(xlToLeft)

431e69acb27d2882f7c9d3e591668613.jpg

All you have to change to make this work for you is the 1.

This is the basic method that you use to return the last cell in a row that has data. That means that the cell will be in the last column that has data.

The 1 in the above code is the number of the row that you want to use when searching for the last column that has data. Currently, this code looks in row 1 and finds the last column in row 1 that has data. Change this to any number you want.

This doesn’t seem very useful right now, but, in practice, it is often used within a loop that goes through a list of rows and you can then set this code to find the last column of data for each row without having to manually change this number.

Columns.Count puts the total number of columns in for that argument of the Cells() function. This tells Excel to go to the very last cell in the row, all the way to the right.

Then, End(xlToLeft) tells Excel to go to the left from that last cell until it hits a cell with data in it.

This basic format is also used to find the last row in a column.

Now, let’s look at how to get useful information from this code.

Select the Last Cell

The first thing that you might want to do is to select the cell that has data in the last column of a row.

Cells(1, Columns.Count).End(xlToLeft).Select

fda93088fec927d3a8259fa3cfb6cf54.jpg

Select is what selects that last cell in the row that has data.

This is exactly the same as the first piece of code except we added Select to the end of it.

1 is the row that is being checked.

Select the Entire Column

This selects the entire column where the last cell with data is found within a particular row.

Cells(1, Columns.Count).End(xlToLeft).EntireColumn.Select

7d8343740427b93dc5a2a8bcc1ee9b0c.jpg

EntireColumn is added to the base code and that is what references, well, the entire column.

Select is added to the end of EntireColumn and that is what does the actual «selecting» of the column.

1 is the row that is being checked.

Get the Number of the Last Column

Let’s get the number of the last column with data. This makes it easier to do things with that column, such as move one to the right of it to find the next empty cell in a row.

Cells(1, Columns.Count).End(xlToLeft).Column

9cf4b0781eb60003d98f7ba87283794b.jpg

Column is appended to the original code in order to give us the number of the column that contains the last piece of data in a row.

This is rather useless on its own though, so let’s put it into a variable so it can be used throughout the macro.

last_col = Cells(1, Columns.Count).End(xlToLeft).Column

8eb55f6df072cb0a80779790bccc8816.jpg

The number of the last column is now stored in the variable last_col and you can now use that variable to reference this number.

1 is the row that is being checked.

Get the Data from the Last Column

Return any data contained in the cell in the last column.

Cells(1, Columns.Count).End(xlToLeft).Value

16fcf6c6b0f5e5f7874e29b4e626c0de.jpg

Value is added to the end of the base code in order to get the contents of the cell.

This is rather useless in its current form so let’s put it into a variable.

cell_value = Cells(1, Columns.Count).End(xlToLeft).Value

6844d187a3066452ac2102510c5eaf93.jpg

Now, the variable cell_value will contain anything that is in the last cell in the row.

1 is the row that is being checked.

Notes

The basic format for finding the last cell that has data in a row is the same and is the most important part to remember. Each piece of information that we want to get from that last cell simply requires one or two things to be added to the end of that base code.

Download the attached file to work with these examples in Excel.

Similar Content on TeachExcel

Get the Last Row using VBA in Excel

Tutorial:
(file used in the video above)
How to find the last row of data using a Macro/VBA in Exce…

Next Empty Row Trick in Excel VBA & Macros

Tutorial:
A simple way to find the next completely empty row in Excel using VBA/Macros, even if som…

How to Add a New Line to a Message Box (MsgBox) in Excel VBA Macros

Tutorial: I’ll show you how to create a message box popup window in Excel that contains text on mult…

Loop Through an Array in Excel VBA Macros

Tutorial:
I’ll show you how to loop through an array in VBA and macros in Excel.  This is a fairly…

Filter Data in Excel to Show Only the Top X Percent of that Data Set — AutoFilter

Macro: This Excel macro filters a set of data in Excel and displays only the top X percent of tha…

Sort Data Left to Right in Excel

Tutorial: How to sort columns of data in Excel.  This is the same as sorting left to right.
This wi…

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Понравилась статья? Поделить с друзьями:
  • Сайт который открывает файл excel
  • Самостоятельная работа по информатике 9 класс электронные таблицы excel
  • Самая последняя строка в excel
  • Сайт картинки для word
  • Самостоятельная работа по информатике 7 класс текстовый редактор word