Очистить лист excel vba

Обновлено: 03.07.2024

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

Синтаксис

Массивист erase

Необходимый аргумент массивлиста — это одна или несколько переменных массива с запятой, которые необходимо стереть.

Примечания

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

Тип массива Влияние стирки на элементы фиксированного массива
Фиксированный числовой массив Задает нулевое значение для каждого элемента.
Фиксированный массив строк (переменной длины) Задает строку нулевой длины ("") для каждого элемента.
Фиксированный массив строк (фиксированной длины) Задает нулевое значение для каждого элемента.
Фиксированный вариантный массив Задает пустое значение для каждого элемента.
Массив типов, определяемых пользователем Задает для каждого элемента значение как для отдельной переменной.
Массив объектов Задает особое значение Nothing (Ничего) для каждого элемента.

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

Пример

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

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

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

Удаление одинаковых строк или диапазонов на нескольких листах с группировкой всех листов

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

1. Щелкните правой кнопкой мыши вкладку любого листа в текущей книге, затем щелкните Выбрать все листы из контекстного меню.


2. Теперь все листы выбраны. Если вы удаляете определенные строки или диапазоны на листе, те же строки или диапазоны на других листах удаляются вместе.

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


Удалить одинаковые строки или диапазоны на нескольких листах с кодами VBA

Помимо вышеуказанного метода, вы можете запустить следующие коды VBA для удаления одних и тех же строк или диапазонов на нескольких листах.

Удалить одинаковые строки на нескольких листах

1. Нажмите другой + F11 клавиши одновременно, чтобы открыть Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите Вставить > Модуль. Затем скопируйте и вставьте следующий код VBA в окно кода.

Код VBA: удаление одинаковых строк на нескольких листах в Excel

Внимание: В коде VBA 4: 5 означает, что строки 4 и 5 будут удалены на нескольких листах в текущей книге. Вы можете изменить их на нужную строку.

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

Удалить одинаковые диапазоны на нескольких листах

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

Код VBA: удалить один и тот же диапазон на нескольких листах

После копирования и вставки кода VBA в модуль нажмите F5 ключ для запуска кода, и во всплывающем окне Kutools for Excel в диалоговом окне выберите диапазон, который вы хотите удалить на нескольких листах, а затем щелкните значок OK кнопку.


Теперь значения ячеек в этом конкретном диапазоне немедленно удаляются со всех листов в текущей книге.

Пустые строки и столбцы могут быть головной болью в таблицах во многих случаях. Стандартные функции сортировки, фильтрации, подведения итогов, создания сводных таблиц и т.д. воспринимают пустые строки и столбцы как разрыв таблицы, не подхватывая данные, расположенные за ними далее. Если таких разрывов много, то удалять их вручную может оказаться весьма затратно, а удалить сразу всех "оптом", используя фильтрацию не получится, т.к. фильтр тоже будет «спотыкаться» на разрывах.

Давайте рассмотрим несколько способов решения этой задачи.

Способ 1. Поиск пустых ячеек

Это, может, и не самый удобный, но точно самый простой способ вполне достойный упоминания.

Предположим, что мы имеем дело вот с такой таблицей, содержащей внутри множество пустых строк и столбцов (для наглядности выделены цветом):

Исходные данные

Допустим, мы уверены, что в первом столбце нашей таблицы (колонка B) всегда обязательно присутствует название какого-либо города. Тогда пустые ячейки в этой колонке будут признаком ненужных пустых строк. Чтобы быстро их все удалить делаем следующее:

  1. Выделяем диапазон с городами (B2:B26)
  2. Нажимаем клавишу F5 и затем кнопку Выделить (Go to Special) или выбираем на вкладке Главная - Найти и выделить - Выделить группу ячеек (Home - Find&Select - Go to special) .
  3. В открывшемся окне выбираем опцию Пустые ячейки (Blanks) и жмём ОК – должны выделиться все пустые ячейки в первом столбце нашей таблицы.
  4. Теперь выбираем на вкладке Главная команду Удалить - Удалить строки с листа (Delete - Delete rows) или жмём сочетание клавиш Ctrl + минус - и наша задача решена.

Само-собой, от пустых столбцов можно избавиться совершенно аналогично, взяв за основу шапку таблицы.

Способ 2. Поиск незаполненных строк

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

Взгляните, например, на следующую таблицу - как раз такой случай:

Исходные данные с пустыми ячейками

Здесь подход будет чуть похитрее:

    Введём в ячейку A2 функцию СЧЁТЗ (COUNTA) , которая вычислит количество заполненных ячеек в строке правее и скопируем эту формулу вниз на всю таблицу:

Считаем количество заполненных ячеек

К сожалению, со столбцами такой трюк уже не проделать – фильтровать по столбцам Excel пока не научился.

Способ 3. Макрос удаления всех пустых строк и столбцов на листе

Для автоматизации подобной задачи можно использовать и простой макрос. Нажмите сочетание клавиш Alt + F11 или выберите на вкладке Разработчик - Visual Basic (Developer - Visual Basic Editor) . Если вкладки Разработчик не видно, то можно включить ее через Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) .

В открывшемся окне редактора Visual Basic выберите команду меню Insert - Module и в появившийся пустой модуль скопируйте и вставьте следующие строки:

Закройте редактор и вернитесь в Excel.

Теперь нажмите сочетание Alt + F8 или кнопку Макросы на вкладке Разработчик. В открывшемся окне будут перечислены все доступные вам в данный момент для запуска макросы, в том числе только что созданный макрос DeleteEmpty. Выберите его и нажмите кнопку Выполнить (Run) - все пустые строки и столбцы на листе будут мгновенно удалены.

Способ 4. Запрос Power Query

Ещё один способ решить нашу задачу и весьма частый сценарий - это удаление пустых строк и столбцов в Power Query.

Сначала давайте загрузим нашу таблицу в редактор запросов Power Query. Можно конвертировать её в динамическую "умную" сочетанием клавиш Ctrl+T или же просто выделить наш диапазон данных и дать ему имя (например Данные) в строке формул, преобразовав в именованный:

Присваиваем имя диапазону данных

Теперь используем команду Данные - Получить данные - Из таблицы/диапазона (Data - Get Data - From table/range) и грузим всё в Power Query:

Загруженные в Power Query данные

Дальше всё просто:

  1. Удаляем пустые строки командой Главная - Сократить строки - Удалить строки - Удалить пустые строки (Home - Remove Rows - Remove empty rows).
  2. Щёлкаем правой кнопкой мыши по заголовку первого столбца Город и выбираем в контекстном меню команду Отменить свёртывание других столбцов (Unpivot Other Columns). Наша таблица будет, как это технически правильно называется, нормализована - преобразована в три столбца: город, месяц и значение с пересечения города и месяца из исходной таблицы. Особенность этой операции в Power Query в том, что она пропускает в исходных данных пустые ячейки, что нам и требуется:

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

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

Способ 1. Грубо и быстро

  1. Выделяем исходный диапазон
  2. Жмем клавишу F5, далее кнопка Выделить(Special) . В открывшмся окне выбираем Пустые ячейки(Blanks) и жмем ОК.

delete_blanks3.jpg

Способ 2. Формула массива

Для упрощения дадим нашим рабочим диапазонам имена, используя Диспетчер Имен (Name Manager) на вкладке Формулы (Formulas) или - в Excel 2003 и старше - меню Вставка - Имя - Присвоить (Insert - Name - Define)

Диапазону B3:B10 даем имя ЕстьПустые, диапазону D3:D10 - НетПустых. Диапазоны должны быть строго одного размера, а расположены могут быть где угодно относительно друг друга.

Теперь выделим первую ячейку второго диапазона (D3) и введем в нее такую страшноватую формулу:

В английской версии это будет:
=IF(ROW()-ROW(НетПустых)+1>ROWS(ЕстьПустые)-COUNTBLANK(ЕстьПустые),"",INDIRECT(ADDRESS(SMALL((IF(ЕстьПустые<>"",ROW(ЕстьПустые),ROW()+ROWS(ЕстьПустые))),ROW()-ROW(НетПустых)+1),COLUMN(ЕстьПустые),4)))

Причем ввести ее надо как формулу массива, т.е. после вставки нажать не Enter (как обычно), а Ctrl+Shift+Enter. Теперь формулу можно скопировать вниз, используя автозаполнение (потянуть за черный крестик в правом нижнем углу ячейки) - и мы получим исходный диапазон, но без пустых ячеек:

Способ 3. Пользовательская функция на VBA

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

Для этого откройте редактор Visual Basic (ALT+F11), вставьте новый пустой модуль (меню Insert - Module) и скопируйте туда текст этой функции:

Не забудьте сохранить файл и вернитесь из редактора Visual Basic в Excel. Чтобы использовать эту функцию в нашем примере:

Читайте также: