Excel VBA — неотъемлемая часть автоматизации Excel, и использование и преимущества VBA нельзя недооценивать. Если вы находитесь в тяжелом сражении, пытаясь объединить несколько листов и книг в Excel, мы здесь, чтобы помочь.
Макросы, упомянутые в этом руководстве, помогут вам решить кажущуюся неразрешимой задачу за считанные секунды (или минуты, если активы данных велики).
Следуя этому руководству, вы создадите свой собственный макрос VBA в Excel и эффективно объедините несколько листов в один файл.
Объединение нескольких листов Excel в один файл
Для этой задачи данные хранятся на следующих листах:
- Лист1
- Лист2
- Лист3
Названия листов, перечисленные выше, приведены только в иллюстративных целях. Этот макрос VBA является общим и не зависит от имен листов; вы можете настроить код для использования с любыми именами листов.
Предварительные условия для запуска кода
Есть некоторые предварительные условия для запуска кода VBA, перечисленные ниже.
Вам необходимо сохранить код макроса в новом файле Excel. Сохраните эту книгу с помощью
.xlsm расширение. Вы можете сохранить книгу макросов VBA под любым именем.Откройте новый файл Excel; Нажмите Альт + F11 на клавиатуре, чтобы открыть редактор Excel VBA. После открытия редактора добавьте новый модуль кода, щелкнув значок Вставлять вкладка вверху. Выбирать Модуль вставить новый модуль; здесь вы будете вводить код макроса VBA, приведенный ниже.
Таблицы данных, которые необходимо консолидировать, должны находиться в другой отдельной рабочей книге. Название рабочей книги и листов может быть любым по вашему выбору.
Как только вы выполните код VBA, макрос VBA будет циклически перебирать каждый доступный рабочий лист в основную книгу (книгу данных) и вставьте содержимое во вновь добавленный лист в том же рабочая тетрадь.
Консолидированные данные будут доступны на листе с именем Консолидированный.
Запуск кода VBA
Пришло время запустить только что сохраненный код макроса. Скопируйте и вставьте этот код в модуль редактора VBA:
Подсистема консолидации_штс()
'объявить различные переменные, используемые в коде, и типы данных vba
Dim sht как рабочий лист, sht1 как рабочий лист, lastrow как целое число, lastrow1 как целое число
'отключить мерцание экрана и всплывающие окна предупреждений во время выполнения
С приложением
.ScreenUpdating = Ложь
.DisplayAlerts = Ложь
Конец с
'сохранить имя основной книги в переменной макроса. Замените Test.xlsx именем вашей основной книги.
Установите wbk1 = Workbooks("Test.xlsx")
'активировать рабочую книгу перед выполнением функции (функций) над ней
wbk1.Активировать
'запустить цикл vba for, чтобы проверить, существует ли уже лист Consolidated. Если он существует, цикл for удалит его.
Для каждого шт в wbk1.Sheets
Если шт. Name="Consolidated" Тогда шт. Удалить
Следующий шт
'Добавить новый лист для хранения недавно консолидированных данных
Рабочие листы. Добавлять. Имя = "Консолидировано"
'Добавить несколько заголовков к каждому отдельному столбцу в консолидированном листе
С листами ("Консолидировано")
.Range("a1").Value = "ДатаЗаказа"
.Range("b1").Value = "Регион"
.Range("c1").Value = "Повтор"
.Range("d1").Value = "Элемент"
.Range("e1").Value = "Единицы"
.Range("f1").Value = "Стоимость единицы"
.Range("g1").Value = "Всего"Конец с
'Вновь созданный консолидированный лист будет содержать консолидированные данные с каждого отдельного листа в основной книге.Для i = 1 To wbk1.Worksheets. Считать
Если Листы (i).Name <> "Консолидированные" Тогда
'Захватите последнюю заполненную строку из листов данных в рабочей книге
lastrow = Листы (i).Range("a1").End (xlDown).Row
'Захват последней заполненной строки в консолидированном листе
lastrow1 = wbk1.Sheets("Consolidated").Range("a1048576").End (xlUp).Row + 1'Скопируйте данные из исходного листа и вставьте их в объединенный лист
Листы (i).Range("a2:g" & lastrow).Цель копирования: = Sheets("Consolidated").Range("a" & lastrow1)
Конец, если
Далее я
'Включить функции Excel VBA для использования в будущем
С приложением
.ScreenUpdating = Истина
.DisplayAlerts = Истина
Конец с
Конец сабвуфера
Объяснение кода VBA
Во-первых, объявите все переменные, которые вы используете в коде, и назначьте им правильные типы данных VBA, чтобы код работал без проблем.
После того, как вы объявите переменные, потребуется некоторая базовая уборка. Это делается путем отключения мерцания экрана и подавления всплывающих предупреждений. Например, когда вы удаляете существующий лист с помощью кода VBA, подсказка в Excel запрашивает подтверждение перед удалением листа. Подобные подсказки подавляются для повышения скорости выполнения.
На следующем шаге вам нужно определить имя рабочей книги, которая содержит все ваши данные. Заменять Тест.xlsx с именем и расширением имени вашей книги. Убедитесь, что вы заключаете имя в кавычки.
Активируйте основную книгу и удалите все существующие листы с именем Консолидированный для удаления любых ранее сохраненных данных. Код VBA переключается между листами, и как только встречается имя листа Консолидированный это удалит его. Это делается с помощью Оператор VBA ЕСЛИ, который проверяет логические условия и удаляет лист, как только условие выполняется.
В основную книгу добавляется новый лист для хранения консолидированных данных. Впоследствии к этому листу добавляются предварительно отформатированные стандартизированные заголовки. Вы можете изменить значения заголовков (заголовков столбцов), обновив информацию рядом со ссылками на ячейки в кавычках.
Например: .Range("a1") = "ДатаЗаказа" можно заменить на .Range("a1") = "НомерЗаказа"
Затем цикл VBA FOR переключает каждый рабочий лист, копирует содержимое листа и вставляет содержимое в Консолидированный рабочего листа перед переходом к следующему листу рабочей книги. Этот процесс повторяется до тех пор, пока не будут скопированы все листы.
В ходе этого процесса все строки автоматически вычисляются и вставляются в сводную таблицу. Последняя заполненная строка вычисляется автоматически перед вставкой данных. Макрос является динамическим и может адаптироваться к различным строкам данных на каждом листе.
Связанный: Дополнительные функции Microsoft Excel, которые вы должны знать
После вставки данных со всех листов в основной лист консолидации макрос переходит к последней части кода. Первоначально отключенные функции VBA снова включаются для использования в будущем.
Объединение нескольких листов с помощью макроса Excel VBA
Excel VBA — это лишний язык программирования, который хорошо работает со всеми компонентами Excel. Каждый фрагмент кода важен, и важно помнить, что выполнение зависит от системы построчного выполнения, поэтому не следует менять порядок строк кода.
Чтобы настроить код в соответствии с вашими требованиями, вы можете внести необходимые изменения и запустить этот код для эффективной и действенной консолидации данных за считанные секунды.
Упростите управление данными с помощью этих макросов Excel.
Читать далее
- Программирование
- Майкрософт Эксель
- Макросы
- Программирование

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