Последняя непустая ячейка в столбце 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

Задача: найти значение продаж в последнем месяце по каждому филиалу, т.е. для Москвы это будет 78, для Питера — 41 и т.д.

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

Универсальным решением будет использование функции ПРОСМОТР (LOOKUP):

Поиск последней непустой ячейки функцией ПРОСМОТР

У этой функции хитрая логика:

  • Она по очереди (слева-направо) перебирает непустые ячейки в диапазоне (B2:M2) и сравнивает каждую из них с искомым значением (9999999).
  • Если значение очередной проверяемой ячейки совпало с искомым, то функция останавливает просмотр и выводит содержимое ячейки.
  • Если точного совпадения нет и очередное значение меньше искомого, то функция переходит к следующей ячейке в строке.

Легко сообразить, что если в качестве искомого значения задать достаточно большое число, то функция пройдет по всей строке и, в итоге, выдаст содержимое последней проверенной ячейки. Для компактности, можно указать искомое число в экспоненциальном формате, например 1E+11 (1*1011 или сто миллиардов).

Если в таблице не числа, а текст, то идея остается той же, но «очень большое число» нужно заменить на «очень большой текст»:

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

Применительно к тексту, понятие «большой» означает код символа. В любом шрифте символы идут в следующем порядке возрастания кодов:

  1. латиница прописные (A-Z)
  2. латиница строчные (a-z)
  3. кириллица прописные (А-Я)
  4. кириллица строчные (а-я)

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

Вот так. Не совсем очевидное, но красивое и компактное решение. Для поиска последней непустой ячейки в столбцах работает тоже «на ура».

Ссылки по теме

  • Поиск и подстановка по нескольким условиям (ВПР по 2 и более критериям)
  • Поиск ближайшего похожего текста (max совпадений символов)
  • Двумерный поиск в таблице (ВПР 2D)

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.

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

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

I think the response from W5ALIVE is closest to what I use to find the last row of data in a column. Assuming I am looking for the last row with data in Column A, though, I would use the following for the more generic lookup:

=MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0))

The first MATCH will find the last text cell and the second MATCH finds the last numeric cell. The IFERROR function returns zero if the first MATCH finds all numeric cells or if the second match finds all text cells.

Basically this is a slight variation of W5ALIVE’s mixed text and number solution.

In testing the timing, this was significantly quicker than the equivalent LOOKUP variations.

To return the actual value of that last cell, I prefer to use indirect cell referencing like this:

=INDIRECT("A"&MAX(IFERROR(MATCH("*",A:A,-1),0),IFERROR(MATCH(9.99999999999999E+307,A:A,1),0)))

The method offered by sancho.s is perhaps a cleaner option, but I would modify the portion that finds the row number to this:

=INDEX(MAX((A:A<>"")*(ROW(A:A))),1)

the only difference being that the «,1» returns the first value while the «,0» returns the entire array of values (all but one of which are not needed). I still tend to prefer addressing the cell to the index function there, in other words, returning the cell value with:

=INDIRECT("A"&INDEX(MAX((A:A<>"")*(ROW(A:A))),1))

Great thread!


Поиск последней заполненной ячейки строки/столбца и возврат её значения

     Если Вам необходимо в таблицах, которые имеют неодинаковое количество ячеек в строках и/или столбцах, например таких:

находить последние заполненные ячейки и извлекать из них значения, то в Excel Вы, к сожалению, не найдёте функции типа ВЕРНУТЬ.ПОСЛЕДНЮЮ.ЯЧЕЙКУ()

Вот как это сделать имеющейся в стандартном наборе функций функцией ПРОСМОТР().

1. Для текстовых значений:

Code

=ПРОСМОТР(«яяя»;A:A)

В английской версии:

Как это работает: Функция ПРОСМОТР() ищет сверху вниз в указанном столбце текст «яяя» и не найдя его, останавливается на последней ячейке в которой есть хоть какой-то текст. Так как мы не указали третий аргумент этой функции «Вектор_результатов», то функция возвращает значение из второго аргумента «Вектор_просмотра».

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

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

2.  Для числовых значений:

Code

=ПРОСМОТР(9E+307;1:1)

В английской версии:

Как это работает: Функция ПРОСМОТР() ищет слева направо в указанной строке число «9E+307» и не найдя его, останавливается на последней ячейке в которой есть хоть какое-то число. Так как мы не указали третий аргумент этой функции «Вектор_результатов», то функция возвращает значение из второго аргумента «Вектор_просмотра».

Пояснение: Почему именно «9E+307«? Потому что это максимально возможное число в Excel. Поэтому функция найти его может только в каком-то невероятном случае, в реальной жизни пользователь такими числами просто не оперирует.

3.  Для смешанных (текстово-числовых) значений:

Code

=ПРОСМОТР(1;1/(A:A<>»»);A:A)

В английской версии:

Code

=LOOKUP(1;1/(A:A<>»»);A:A)

Как это работает: Функция ПРОСМОТР() ищет слева направо в указанной строке число «1» и найдя его, останавливается на последней ячейке в которой есть это число. Так как мы указали третий аргумент этой функции «Вектор_результатов», то функция возвращает значение из него, соответствующее позиции последнего вхождения искомого в просматриваемый массив.

Пояснение: Почему именно «1«? Да просто так :) С таким же успехом можно использовать число 2 или 3 или 100500, например. Главное что бы первый аргумент функции был не менее делимого в выражении 1/Диапазон. Вот пример применения другого числа в первом аргументе, при делимом отличном от единицы:

  • 1
  • 2
  • 3
  • 4
  • 5

Категория: Приёмы работы с формулами | Добавил: Serge_007 (14.01.2012)

Просмотров: 95944 | Комментарии: 36
| Теги: последняя ячейка, Поиск, вернуть значение, найти последнюю ячейку, последняя заполненная ячейка, формулы эксель, формулы Excel
| Рейтинг: 4.5/12

Всего комментариев: 36 1 2 »

Порядок вывода комментариев:

+1
 

1   
Shiri  
(22.02.2012 10:18)
[
Материал]

   I’m not easily ipmresesd but you’ve done it with that posting.

+2
 


   Добавлю свои 5 коп. :
если нужен номер строки удобней использовать

0
 

3   
Туся  
(25.06.2012 13:15)
[
Материал]

   Спасибо БОЛЬШОЕ, ОООЧЕНЬ помогло! Как раз то, что искала и так быстро!

7   
Дмитрий  
(18.09.2013 11:32)
[
Материал]

   Огромное СПАСИБО. Без Вас бы не справился :)

8   
Kim  
(08.10.2013 06:35)
[
Материал]

   от себя тоже добавлю СПАСИБИЩЕ не только за формулу, но и за пояснение

9   
Агдам  
(18.02.2014 21:29)
[
Материал]

   А как решить проблему когда в последней ячейке оказалось число <0? В этом случае результатом становится пустая ячейка.


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

11   
Агдам  
(18.02.2014 22:50)
[
Материал]

   Serge 007, на форуме http://www.cyberforum.ru/ms-excel/thread388235.html, вы сказали, что «Функция ПРОСМОТР ищет максимально возможное число в Excel (9E+307) в массиве чисел A2:A10 сверху вниз и останавливается на последнем найденном числе больше 0»
У меня когда когда число <0 то функция выдает пустую ячейку, когда>0, все нормально. Как решить проблему?


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

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

16   
mr_vads  
(17.03.2014 18:11)
[
Материал]

   Спасибо, прикрутил «поискпоз» к Вашему методу, но если последние значения повторяются — выдает номер строки только первого вхождения (из последних повторов). Следовательно, Ваш метод нашел значение, но не последнее; и если его использовать в комбинации с другими функциями — ошибки неизбежны.
Формуляр предложил отличную формулу =MATCH(«»,A:A,-1), при этом можно даже использовать =MATCH(,A:A,-1)
=)


   mr_vads, мой метод возвращает последнее ЗНАЧЕНИЕ строки или столбца и неважно повторяется оно в них или нет

А метод Формуляра действительно возвращает НОМЕР последней заполненной СТРОКИ, но не ЗНАЧЕНИЕ

Читайте статью внимательнее ;)

18   
mr_vads  
(21.03.2014 00:27)
[
Материал]

   может быть, что «поискпоз» сбил с толку. хотя надо проверить («смещ» например). в любом случае, спасибо!

19   
mr_vads  
(21.03.2014 00:29)
[
Материал]

   и кстати, (а может и нет), цветной код трудночитаем


   Капча (цветной код) показывается только для незарегистрированных пользователей

   Добрый день, формула =ПРОСМОТР(9E+307;1:1) прекрасна работала, но решил внести небольшие изменения, в обрабатываемых ячейках поместил не числа, а формулы (суммы из других строк) и все остановилось, вместо чисел стал возвращаться 0. Подскажите как быть, очень хорошо начались решаться проблемы и вот опять стопор.


   Если формула

возвращает ноль, значит последнее значение в указанном диапазоне равно нулю. Так что, с точки зрения логики формулы, всё работает правильно.

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

Код

=ПРОСМОТР(1;1:1/1:1;1:1)

   Спасибо. То что нужно.

Эта формула вписывает последнюю запись в строке. В столбце (сверху ячейки — в шапке) я записываю дату. И очень нужно еще и вписать дату, когда была сделана эта последняя запись. Как пример: (20_03_2014 Договорились созвониться в мае) Если это реально, будет вообще космос!

Спасибо

   функции =ИНДЕКС(1:1;СЧЁТЗ(1:1)) не надо максимального числа, но и ваша функция =ПРОСМОТР(9E+307;1:1) работает. Спасибо

1-25 26-36

Добавлять комментарии могут только зарегистрированные пользователи.

[

Регистрация

|

Вход

]

Like this post? Please share to your friends:
  • Последняя непустая ячеек в excel
  • Последний лист книги excel
  • Последняя не пустая ячейка столбца excel
  • Последний лист кассовой книги бланк скачать word
  • Последняя не пустая ячейка excel vba