Последняя непустая ячейка в столбце - PullRequest
105 голосов
/ 26 марта 2011

Кто-нибудь знает формулу для поиска значения последней непустой ячейки в столбце в Microsoft Excel?

Ответы [ 23 ]

1 голос
/ 10 марта 2017

Я перепробовал все энергонезависимые версии, но ни одна из приведенных выше версий не сработала. Excel 2003 / 2007update.Конечно, это можно сделать в Excel 2003. Не как массив или стандартная формула.Я получаю только пустое, 0 или # значение ошибки.Поэтому я прибегаю к изменчивым методам .. Это сработало ..

= LOOKUP (2,1 / (T4: T369 <> ""), T4: T369)

@ Джулиан Кроне .. Использование ";"вместо "," не работает!Я думаю, что вы используете Libre Office, а не MS Excel?LOOKUP настолько раздражающе изменчив, что я использую его только в крайнем случае

0 голосов
/ 16 августа 2018

Если вы не боитесь использовать массивы, тогда для решения проблемы очень простая формула:

= СУММ (ЕСЛИ (A: <> "", 1,0))

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

0 голосов
/ 05 июня 2018

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

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

Первый MATCH найдет последнюю текстовую ячейку, а второй MATCH найдет последнюю числовую ячейку. Функция IFERROR возвращает ноль, если первое совпадение находит все числовые ячейки или если второе совпадение находит все текстовые ячейки.

По сути, это небольшое изменение смешанного текстового и числового решения W5ALIVE.

При тестировании времени это было значительно быстрее, чем эквивалентные вариации LOOKUP.

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

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

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

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

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

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

Отличная тема!

0 голосов
/ 28 августа 2017

Эта формула работала со мной для офиса 2010:

= LOOKUP (2; 1 / (A1: A100 <> ""); A1: A100)

A1: первая ячейкаA100: обратитесь к последней ячейке в сравнении

0 голосов
/ 20 сентября 2016

для Microsoft office 2013

"Последний, но один" из непустой строки:

=OFFSET(Sheet5!$C$1,COUNTA(Sheet5!$C:$C)-2,0)

«Последняя» не пустая строка:

=OFFSET(Sheet5!$C$1,COUNTA(Sheet5!$C:$C)-1,0)
0 голосов
/ 28 января 2013

Поместите этот код в модуль VBA.Сохранить.Под функциями, определенными пользователем, ищите эту функцию.

Function LastNonBlankCell(Range As Excel.Range) As Variant
    Application.Volatile
    LastNonBlankCell = Range.End(xlDown).Value
End Function
0 голосов
/ 18 октября 2015

Если вы знаете, что между ними не будет пустых ячеек, самый быстрый способ - это.

=INDIRECT("O"&(COUNT(O:O,"<>""")))

Он просто считает непустые ячейки и ссылается на соответствующую ячейку.

Может также использоваться для определенного диапазона.

=INDIRECT("O"&(COUNT(O4:O34,"<>""")+3))

Возвращает последнюю непустую ячейку в диапазоне O4: O34.

0 голосов
/ 29 сентября 2015

Для отслеживания версий (добавление буквы v к началу числа) я нашел, что это хорошо работает в Xcelsius (SAP Dashboards)

="v"&MAX(A2:A500)
0 голосов
/ 20 августа 2015

У меня тоже была такая же проблема. Эта формула также работает одинаково хорошо: -

=INDIRECT(CONCATENATE("$G$",(14+(COUNTA($G$14:$G$65535)-1))))

14 - номер первой строки в строках, которые вы хотите считать.

Хронический коготь

0 голосов
/ 26 июня 2015

Хорошо, у меня возникла та же проблема, что и у автора, и я попробовал оба главных ответа. Но только получая ошибки формулы. Оказалось, что мне нужно было обменять "," на ";" для формул для работы. Я использую XL 2007.

Пример:

=LOOKUP(2;1/(A:A<>"");A:A)

или

=INDEX(A:A;MAX((A:A<>"")*(ROW(A:A))))
...