Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Excel 2010 Excel 2007 Еще…Меньше
При этом в Excel сохраняется только часть каждого из них, которая содержит данные или форматирование. Пустые ячейки могут содержать форматирование, из-за котором последняя ячейка в строке или столбце выпадет за пределы диапазона ячеек, содержащих данные. В результате размер файла книги будет больше, чем требуется, и при печати книги на печать может потребоваться больше страниц.
Чтобы избежать этих проблем, можно найти последнюю ячейку с данными или форматированием на нем, а затем сбросить эту последнюю ячейку, сбросить все форматирование, которое может быть применено в пустых строках или столбцах между данными и последней ячейкой.
Поиск последней ячейки с данными или форматированием на нем
-
Чтобы найти последнюю ячейку с данными или форматированием, щелкните в любом месте на нем и нажмите CTRL+END.
Примечание: Чтобы выбрать последнюю ячейку в строке или столбце, нажмите клавишу END, а затем клавишу СТРЕЛКА ВПРАВО или СТРЕЛКА ВНИЗ.
Очистка всего форматирования между последней ячейкой и данными
-
Выполните одно из указанных ниже действий.
-
Чтобы выбрать все столбцы справа от последнего столбца с данными, щелкните первый заголовок столбца, нажмите и удерживайте нажатой кнопку CTRL, а затем щелкните заголовки столбцов, которые нужно выбрать.
Совет: Можно также щелкнуть первый заголовок столбца и нажать CTRL+SHIFT+END.
-
Чтобы выбрать все строки под последней строкой с данными, щелкните заголовок первой строки, нажмите и удерживайте нажатой кнопку CTRL, а затем щелкните заголовки строк, которые нужно выбрать.
Совет: Можно также щелкнуть заголовок первой строки и нажать CTRL+SHIFT+END.
-
-
На вкладке Главная в группе Редактирование щелкните стрелку рядом с кнопкой Очистить и выберите очистить все.
-
Сохраните лист.
-
Закроем таблицу.
При повторном открыть книгу последняя ячейка данных должна быть последней ячейкой на этом сайте.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
К началу страницы
Нужна дополнительная помощь?
MrBrown Пользователь Сообщений: 114 |
Здравствуйте! Изменено: MrBrown — 03.06.2019 16:48:26 |
Sanja Пользователь Сообщений: 14838 |
Муторное это дело — перебирать ячейки и проверять на наличие границ. Лучше ‘привязаться’ к какому нибудь другому признаку. Как правило, какая нибудь ячейка со словом ‘Итого’ или что-то вроде этого Изменено: Sanja — 03.06.2019 16:48:53 Согласие есть продукт при полном непротивлении сторон. |
MrBrown Пользователь Сообщений: 114 |
#3 03.06.2019 16:52:52
ОК, тогда так (чтобы не перебирать все миллионы ячеек): Изменено: MrBrown — 03.06.2019 16:55:28 |
||
Sanja Пользователь Сообщений: 14838 |
#4 03.06.2019 17:10:03
Прикрепленные файлы
Согласие есть продукт при полном непротивлении сторон. |
||||
MrBrown Пользователь Сообщений: 114 |
Sanja, спасибо, но годится только для одинарной рамки («внешние границы»). |
Sanja Пользователь Сообщений: 14838 |
#6 03.06.2019 17:25:06
Ну поэкспериментируйте сами.
Я Вам показал как ‘использовать это слово’ Согласие есть продукт при полном непротивлении сторон. |
||||
cм. вложение, какая из ячеек с рамкой тут крайняя? Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Sanja Пользователь Сообщений: 14838 |
#8 03.06.2019 17:32:07 MrBrown, я Вас сразу предупредил
Ищите другой признак. Согласие есть продукт при полном непротивлении сторон. |
||
MrBrown Пользователь Сообщений: 114 |
Ігор Гончаренко, здесь — ячейка C3. Sanja, а можно так? (см. ответ Игорю Гончаренко). Изменено: MrBrown — 04.06.2019 09:23:16 |
RAN Пользователь Сообщений: 7091 |
Опираться на границу ячейки — плохая идея. |
MrBrown Пользователь Сообщений: 114 |
RAN, крайняя — правая нижняя ячейка. Это С10. |
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#12 04.06.2019 10:33:31 Доброе время суток
Вариант
|
|||
MrBrown Пользователь Сообщений: 114 |
#13 05.06.2019 12:09:15 Вот частный случай: Андрей VG, благодарю за код. Но, как ни пытался использовать функцию, вставлять её в процедуру «Sub», — не получилось.
Прикрепленные файлы
Изменено: MrBrown — 05.06.2019 12:10:55 |
||
Андрей VG Пользователь Сообщений: 11878 Excel 2016, 365 |
#14 05.06.2019 12:23:41
Предупреждать надо, что вы программист Ctrl+C, Ctrl+V
|
||||
MrBrown Пользователь Сообщений: 114 |
#15 05.06.2019 12:47:46 Андрей VG, Работает! Моя благодарность — словами не описать.
Класс! Я восхищён таким точным определением дилетанта от программирования. Изменено: MrBrown — 05.06.2019 14:12:41 |
||
Вы не упомянули, как вы успешно получаете самое правильное значение в таблице. Один из способов сделать это, введя следующую формулу в ячейку B9:
=LOOKUP(2,1/(2:2<>0),2:2)
Эта формула работает так, что 2:2<>0
возвращает массив значений True/False, в которых ячейки в строке 2 не являются пустыми. 1/(2:2<>"")
возвращает массив, состоящий из 1 для каждой непустой ячейки и # DIV/0! за каждую пустую ячейку. LOOKUP ищет в возвращенном массиве значение 2; поскольку это значение отсутствует в массиве, оно находит последнее вхождение следующего наибольшего значения (в данном случае 1). LOOKUP возвращает значение из последнего параметра (2:2), которое соответствует найденному значению.
Мы можем изменить эту формулу, чтобы она возвращала значение ячейки перед последним непустым значением, введя ее в ячейку C9:
=LOOKUP(2,1/(B2:ZZ2<>0),A2:ZY2)
В этой версии массив, в котором ищется значение, смещается влево на одну ячейку от массива, в котором был произведен поиск, в результате чего ячейка слева от последней возвращаемой ячейки. Обратите внимание, что вы должны быть уверены, что данные не выходят за пределы диапазонов, используемых в LOOKUP (ZZ2 в моем примере).
Найдем номер строки последней заполненной ячейки в столбце и списке. По номеру строки найдем и само значение.
Рассмотрим диапазон значений, в который регулярно заносятся новые данные.
Диапазон без пропусков и начиная с первой строки
В случае, если в столбце значения вводятся, начиная с первой строки и без пропусков, то определить номер строки последней заполненной ячейки можно формулой:
=СЧЁТЗ(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
.
СОВЕТ:
Как видно, наличие пропусков в диапазоне существенно усложняет подсчет. Поэтому имеет смысл при заполнении и проектировании таблиц придерживаться правил приведенных в статье
Советы по построению таблиц
.
Определение места крайней НЕнулевой ячейки в столбце |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |