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

Никто не хочет проводить бесконечные часы, работая с разными источниками, открывая каждую книгу, копируя и вставляя данные с разных листов, прежде чем, наконец, создать одну объединенную книгу. Что, если макрос VBA может сделать это за вас?

С помощью этого руководства вы можете создать свой собственный код макроса Excel VBA для объединения нескольких книг за считанные минуты (если файлов данных много).

Предварительные условия для создания собственного кода макроса VBA

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

instagram viewer

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

Создание собственного кода Excel VBA

После того, как предварительные требования устранены, пришло время углубиться в код и начать работать над основами, чтобы адаптировать его к вашим требованиям.

Связанный: Дополнительные функции Microsoft Excel, которые вы должны знать

нажмите Alt+F11 в Excel, чтобы открыть редактор кода макросов VBA. Вставьте код, написанный ниже, и сохраните файл как книгу с поддержкой макросов (.xlsm расширение).

Суб открытые файлы ()

'объявить переменные, используемые в коде VBA

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'отключить эти функции для улучшения обработки кода

С приложением
.DisplayAlerts = Ложь
.ScreenUpdating = Ложь
Конец с

'изменить путь к папке, в которой будут сохраняться ваши файлы

MyFolder = InputBox("Введите путь к папке консолидации") & "\"

'определить ссылку на папку в переменной макроса

МойФайл=Каталог(МояПапка)

'открыть цикл для циклического просмотра каждой отдельной книги, хранящейся в папке

Делать, пока Лен (MyFile) > 0

'активировать книгу консолидации

Windows("Консолидация").Активировать

'вычислить последнюю заполненную строку

Диапазон("a1048576").Выбрать
Выбор. Конец (xlUp).Выбрать
Активселл. Смещение (1, 0).Выбрать

'открыть первую книгу в папке Consolidation

Рабочие тетради. Открыть имя файла:=MyFolder & MyFile

Windows (Мой файл).Активировать

'переключаться между листами в рабочих книгах, чтобы скопировать данные

Dim ws As рабочий лист
Для каждого ws в листах

вс. Активировать
вс. AutoFilterMode = Ложь

'игнорировать заголовок и скопировать данные из строки 2
Если Cells (2, 1) = "" Then GoTo 1

Перейти к 10

1: Далее

10: Диапазон("a2:az20000").Копировать

Windows("Консолидация").Активировать

'вставить скопированное содержимое

Активный лист. Вставить

Windows (Мой файл).Активировать

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

АктивВоркбук. Закрывать

'очистить кеш, чтобы сохранить значение следующей книги

МойФайл = Каталог()

'открыть следующий файл в папке

Петля

'включить отключенные функции для использования в будущем

С приложением
.DisplayAlerts = Истина
.ScreenUpdating = Истина
Конец с

Конец подписки

Объяснение кода VBA

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

Связанный: Веб-сайты и блоги для изучения советов и рекомендаций по Excel

Excel VBA понимает созданные пользователем переменные и соответствующие им типы данных, объявленные с помощью тусклый (измерение).

Чтобы повысить скорость обработки вашего кода, вы можете отключить обновление экрана и подавить все оповещения, так как это замедляет выполнение кода.

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

Рабочая книга консолидации активирована, чтобы Excel VBA мог вычислить последнюю заполненную строку. Выбирается последняя ячейка рабочего листа, и последняя строка вычисляется в рабочей книге с использованием функции смещения. Это очень полезно, когда макрос начинает добавлять данные из исходных файлов.

Когда цикл открывает первый исходный файл, фильтры удаляются с каждого отдельного листа (если они существуют), а данные в диапазоне от A2 до AZ20000 будут скопированы и вставлены в консолидацию. рабочая тетрадь.

Процесс повторяется до тех пор, пока все листы рабочей книги не будут присоединены к основной рабочей книге.

Связанный: Лучшие онлайн-курсы для освоения Advanced Excel

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

Цикл запрограммирован на выполнение до тех пор, пока все файлы в главной книге не будут автоматически обновлены.

Пользовательские настройки

Иногда вы не хотите беспокоиться о встроенных подсказках, особенно если вы являетесь конечным пользователем. Если вы предпочитаете жестко указывать путь к папке Consolidation в коде, вы можете изменить эту часть кода:

MyFolder = InputBox("Введите путь к папке консолидации") & "\"

К:

MyFolder = «Путь к папке» & «\»

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

Чтобы максимально использовать этот макрос, вы можете использовать его только для объединения книг в одном формате. Если структуры отличаются, вы не можете использовать этот макрос VBA.

Объединение нескольких книг с помощью макроса Excel VBA

Создавать и изменять код Excel VBA относительно легко, особенно если вы понимаете некоторые нюансы кода. VBA систематически просматривает каждую строку кода и выполняет ее построчно.

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

5 классных макросов Microsoft Excel для сортировки данных

Упростите управление данными с помощью этих макросов Excel.

Читать далее

доляТвитнутьЭлектронное письмо
Похожие темы
  • Программирование
  • Программирование
  • Майкрософт Эксель
Об авторе
Гаурав Сиял (опубликовано 19 статей)

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

Другие работы Гаурава Сиала

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться