Объединение данных из нескольких таблиц Excel в одну таблицу
В этом примере данные из нескольких таблиц Excel объединяются в одну таблицу, содержащую все строки. Предполагается, что все используемые таблицы имеют одинаковую структуру.
Существует два варианта этого сценария:
- Первый скрипт объединяет все таблицы в файле Excel.
- Второй скрипт выборочно получает таблицы в наборе листов.
Настройка: пример файла Excel
Эта книга содержит данные, объекты и форматирование, ожидаемые скриптом.
Пример кода. Объединение данных из нескольких таблиц Excel в одну таблицу
Добавьте следующий скрипт в пример книги и попробуйте его самостоятельно!
function main(workbook: ExcelScript.Workbook) < // Delete the "Combined" worksheet, if it's present. workbook.getWorksheet('Combined')?.delete(); // Create a new worksheet named "Combined" for the combined table. const newSheet = workbook.addWorksheet('Combined'); // Get the header values for the first table in the workbook. // This also saves the table list before we add the new, combined table. const tables = workbook.getTables(); const headerValues = tables[0].getHeaderRowRange().getTexts(); console.log(headerValues); // Copy the headers on a new worksheet to an equal-sized range. const targetRange = newSheet.getRange('A1').getResizedRange(headerValues.length-1, headerValues[0].length-1); targetRange.setValues(headerValues); // Add the data from each table in the workbook to the new table. const combinedTable = newSheet.addTable(targetRange.getAddress(), true); for (let table of tables) < let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts(); let rowCount = table.getRowCount(); // If the table is not empty, add its rows to the combined table. if (rowCount >0) < combinedTable.addRows(-1, dataValues); >> >
Пример кода. Объединение данных из нескольких таблиц Excel на отдельных листах в одну таблицу
Скачайте пример файла tables-select-copy.xlsx и используйте его со следующим скриптом, чтобы опробовать его самостоятельно!
function main(workbook: ExcelScript.Workbook) < // Set the worksheet names to get tables from. const sheetNames = ['Sheet1', 'Sheet2', 'Sheet3']; // Delete the "Combined" worksheet, if it's present. workbook.getWorksheet('Combined')?.delete(); // Create a new worksheet named "Combined" for the combined table. const newSheet = workbook.addWorksheet('Combined'); // Create a new table with the same headers as the other tables. const headerValues = workbook.getWorksheet(sheetNames[0]).getTables()[0].getHeaderRowRange().getTexts(); const targetRange = newSheet.getRange('A1').getResizedRange(headerValues.length-1, headerValues[0].length-1); targetRange.setValues(headerValues); const combinedTable = newSheet.addTable(targetRange.getAddress(), true); // Go through each listed worksheet and get their tables. sheetNames.forEach((sheet) => < const tables = workbook.getWorksheet(sheet).getTables(); for (let table of tables) < // Get the rows from the tables. let dataValues = table.getRangeBetweenHeaderAndTotal().getTexts(); let rowCount = table.getRowCount(); // If there's data in the table, add it to the combined table. if (rowCount >0) < combinedTable.addRows(-1, dataValues); >> >); >
Как объединить данные из разных файлов MS Excel в одну таблицу

Иногда может возникнуть необходимость в объединении данных из разных файлов в одну таблицу. Если их много, а информация размещена на разных листах, то обычное копирование займет много времени.
Решить данную задачу поможет Power Query – встроенный в MS Excel инструмент обработки данных.
Рассмотрим пример объединения файлов с общей «шапкой» и данными на разных листах:

- Импортируем файлы («Данные» → «Создать запрос» → «Из файла» → «Из папки») и указываем путь:

2. Power Query покажет все файлы, размещенные по указанному адресу:

3. Нажимаем «изменить», переходим в редактор запросов и фильтруем нужные файлы:

4. Удаляем все столбцы кроме «Content»:

5. Добавляем новый столбец и вводим формулу с учетом регистра:

6. Раскрываем столбец «Пользовательская», снимаем флажок «Использовать исходное имя…».
Если есть предупреждение о незавершенном списке, то жмем «загрузить ещё»:

7. Удаляем столбцы кроме «Data», раскрываем его. Если есть предупреждение, то жмем «загрузить ещё»:

8. Power Query отразит сводные данные:

9. Ставим первую строку как заголовок: «Главная» → «Использовать первую строку…»:

10. Скрываем фильтром лишние заголовки и выгружаем данные на новый/существующий лист:

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

Примечание. В этой теме показано, как объединять файлы из папки. Вы также можете объединять файлы, хранимые в SharePoint, azure BLOB-служба хранилища и Azure Data Lake служба хранилища. Процесс аналогичный.
Подготовка
- Убедитесь, что все файлы, которые вы хотите объединить, содержатся в выделенной папке без лишних файлов. В противном случае все файлы в папке и все вложенные папки, которые вы выбрали, будут включены в данные для совместной обработки.
- У каждого файла должна быть та же схема, что и для согласованных столбцов, типов данных и количества столбцов. Столбцы не должны быть в том же порядке, что и имена столбцов.
- По возможности старайтесь не использовать несвязанные объекты данных для источников данных, которые могут иметь несколько объектов данных, например JSON-файл, Excel книгу или базу данных Access.
Импорт из текстовых, CSV- или XML-файлов
Каждый из этих файлов имеет простой шаблон, в каждом из которых есть только одна таблица данных.
- Выберите Данные >Получить данные > из файла >из папки. Появится диалоговое окно Обзор.
- Найдите папку с файлами, которые вы хотите объединить.
- Список файлов в папке появится в диалоговом папке. Убедитесь, что в списке указаны все нужные файлы.

Power Query автоматически создает запросы для консолидации данных из каждого файла на каждом из них. Шаги запроса и созданные столбцы зависят от того, какую команду вы выбрали. Дополнительные сведения см. в разделе Сведения обо всех этих запросах.
Импорт из JSON
- Выберите Данные >Получить данные > из файла >из папки. Появится диалоговое окно Обзор.
- Найдите папку с файлами, которые вы хотите объединить.
- Список файлов в папке появится в диалоговом папке. Убедитесь, что в списке указаны все нужные файлы.
- Выберите одну из команд в нижней части диалогового окна, например Объединить>Объединить & Transform. В разделе Обо всех этих командах обсуждаются дополнительные команды.

Появится редактор Power Query.
Столбец Значение является структурированным столбцом списка. Выберите значок Развернуть, а затем выберите Развернуть до новых строк.

Столбец Value (Значение) теперь является структурированным столбцом Record (Запись). Выберите значок
развернуть. Появится диалоговое окно с drop-down.

Power Query автоматически создает запросы для консолидации данных из каждого файла на каждом из них. Шаги запроса и созданные столбцы зависят от того, какую команду вы выбрали. Дополнительные сведения см. в разделе Сведения обо всех этих запросах.
Импорт из Excel или Access
Каждый из этих источников данных может иметь несколько объектов для импорта. Книга Excel может иметь несколько книг, Excel таблиц или именовых диапазонов. База данных Access может иметь несколько таблиц и запросов.
- Выберите Данные >Получить данные > из файла >из папки. Появится диалоговое окно Обзор.
- Найдите папку с файлами, которые вы хотите объединить.
- Список файлов в папке появится в диалоговом папке. Убедитесь, что в списке указаны все нужные файлы.
- Выберите одну из команд в нижней части диалогового окна, например Объединить> Объединить & Загрузить. В разделе Обо всех этих командах обсуждаются дополнительные команды.
- В диалоговом окне Объединение файлов:
- В поле Образец файла выберите файл, который будет использоваться в качестве примера данных для создания запросов. Нельзя выбрать объект или выбрать только один объект. Однако выбрать несколько из них нельзя.
- Если объектов много, используйте поле Поиск, чтобы найти объект, или параметры отображения, а также кнопку Обновить для фильтрации списка.
- В нижней части диалогового окна можно выбрать или отобирать для файлов с ошибками поле Пропускать файлы с ошибками.
- Нажмите кнопку ОК.
Power Query автоматически создает запрос для консолидации данных из каждого файла на каждом из них. Шаги запроса и созданные столбцы зависят от того, какую команду вы выбрали. Дополнительные сведения см. в разделе Сведения обо всех этих запросах.
Использование команды «Объединить файлы»
Для большей гибкости вы можете явным образом объединить файлы в редакторе Power Query с помощью команды Объединить файлы. Предположим, что в исходных папках есть как типы файлов, так и вложенные папки, и вы хотите подцелить определенные файлы с тем же типом файлов и схемой, но не с другими. Это может повысить производительность и упростить преобразования.
- Выберите data >Get Data > Data > From File >From Folder. Появится диалоговое окно Обзор.
- Найдите папку с файлами, которые вы хотите объединить, и выберите открыть.
- Список всех файлов в папке и вложенных папках появится в диалоговомпапки. Убедитесь, что в списке указаны все нужные файлы.
- Внизу выберите преобразовать данные. Откроется редактор Power Query со всеми файлами в папке и во вложенных папках.
- Чтобы выбрать нужные файлы, отфильтруем столбцы, например Расширение или Путь к папке.
- Чтобы объединить файлы в одну таблицу, выберите столбец Содержимое, содержащий каждый двоичный (обычно первый столбец), а затем выберите Главная >Объединить файлы. Появится диалоговое окно Объединение файлов.
- Power Query анализирует пример файла (по умолчанию первый файл в списке), чтобы использовать правильный соединительщик и определить совпадающие столбцы.
Power Query автоматически создает запросы для консолидации данных из каждого файла на каждом из них. Шаги запроса и созданные столбцы зависят от того, какую команду вы выбрали. Дополнительные сведения см. в разделе Сведения обо всех этих запросах.
Обо всех этих командах
Существует несколько команд, которые можно выбрать, и каждая из них имеет разные цели.
- Объединение и преобразование данных Чтобы объединить все файлы с запросом, а затем запустить редактор Power Query, выберите объединить>объединить и преобразовать данные.
- Объединение и загрузка Чтобы отобразить диалоговое окно Образец файла, создайте запрос, а затем загрузите на таблицу, выберите объединить>Объединить и загрузить.
- Объединение и загрузка в Чтобы отобразить диалоговое окно Образец файла, создайте запрос, а затем в диалоговом окне Импорт выберите объединить> Объединить и загрузить в.
- Нагрузки Чтобы создать запрос с одним шагом, а затем загрузить на таблицу, выберите загрузить >загрузить.
- Загрузить в Чтобы создать запрос одним шагом и отобразить диалоговое окно Импорт, выберите загрузить >Загрузить в.
- Преобразование данныхЧтобы создать запрос с одним шагом и запустить редактор Power Query, выберите Преобразовать данные.
Обо всех этих запросах
Тем не менее при объединения файлов в области Запросы в группе «Запросы-справки» создается несколько вспомогательных запросов.

- Power Query создает запрос «Образец файла» на основе примера запроса.
- Запрос функции Transform File (Файл преобразования) использует запрос Parameter1 для указания каждого файла (двоичного) в качестве входного в запрос «Образец файла». Этот запрос также создает столбец Содержимое, содержащий содержимое файла, и автоматически расширяет его, чтобы добавить данные столбца в результаты. Запросы «Преобразовать файл» и «Образец файла» связаны, поэтому изменения в запросе «Образец файла» отражаются в запросе «Преобразовать файл».
- Запрос, содержащий окончательные результаты, находится в группе «Другие запросы». По умолчанию он называется папкой, из которого вы импортировали файлы.
Для дальнейшего изучения щелкните каждый запрос правой кнопкой мыши и выберите Изменить, чтобы изучить каждый шаг запроса и увидеть, как работают запросы на этапе.
Чтобы начать процесс объединения нескольких файлов, сначала поместите их все в одну папку.
Примечание: Поддерживаются файлы Excel и Access, текстовые файлы, а также файлы в форматах CSV, JSON и XML.
- На вкладке Power Query выберите из файла > из папки.

- Нажмите кнопку Обзор, чтобы перейти к нужной папке. Появится список файлов в папке. Нажмите кнопку Изменить, чтобы открыть редактор запросов. В этом примере мы загрузим четыре книги Excel.

- Убедившись в том, что все нужные файлы присутствуют в списке, нажмите в столбце Содержимое кнопку Объединить двоичные данные.

- Будет выполнен анализ каждого файла и определен правильный формат, например текстовый, Excel или JSON. В этом примере отображается список листов из первой книги Excel. Выберите нужный лист и нажмите кнопку ОК.

- При преобразовании разных файлов автоматически создается запрос для консолидации данных из каждого файла и предварительного просмотра. Если результат вас устраивает, нажмите кнопку Закрыть & загрузить.
Когда процесс объединения двоичных файлов завершится, данные листов из списка будут консолидированы на одном листе. - Если исходные файлы данных изменятся, вы всегда сможете обновить импортируемые данные. Щелкните в любом месте диапазона данных, а затем перейдите в инструменты запросов >обновить. Кроме того, вы можете легко применить дополнительные шаги преобразования или извлечения, изменяя автоматически созданный запрос-образец, не беспокоясь об изменении или создании дополнительных шагов запроса функций. любые изменения запроса-образец автоматически создаются в связанном запросе функции.
Известные проблемы
При загрузке процедуры объединения двоичных файлов в Excel может появиться такое сообщение об ошибке:

Если вы проигнорируете ошибки и нажмете кнопку ОК, то процесс объединения двоичных файлов будет выполнен и правильно загрузит данные, несмотря на это сообщение. Мы работаем над устранением этой ошибки.
Как быстро объединить несколько файлов Excel
Намного проще обрабатывать данные в одном файле, чем переключаться между многочисленными книгами. Однако объединение нескольких книг Excel в один файл может быть сложным и долгим процессом, особенно если книги, которые вам нужно объединить, содержат много листов. Итак, как подойти к этой проблеме? Вы будете копировать их вручную или с помощью кода VBA? Или вы используете один из специализированных инструментов для объединения файлов Excel?
Ниже вы найдете несколько хороших способов, позволяющих реализовать объединение.
Примечание. В этой статье мы рассмотрим, как копировать листы из нескольких книг Excel в одну книгу. Если вы ищете быстрый способ скопировать данные с нескольких листов на один общий лист, вы найдете подробную инструкцию в другой статье: Как объединить несколько листов в один.
Простой метод — копировать листы руками.
Если вам нужно объединить всего пару файлов Excel, вы можете вручную скопировать или переместить листы из одного файла в другой. Вот как это можно сделать:
- Откройте книги, которые мы планируем объединить.
- Выберите листы в исходной книге, которые вы хотите скопировать в основную книгу.
Чтобы выбрать несколько листов, используйте один из следующих приемов:

- Чтобы выбрать соседние листы, щелкните вкладку первого, который вы хотите скопировать, нажмите и удерживайте клавишу Shift, а затем щелкните вкладку последнего. Это действие выберет все листы между ними.
- Чтобы выбрать несмежные, удерживайте клавишу Ctrl и щелкайте вкладку каждого из них по отдельности.
- Выделив все нужные листы, щелкните правой кнопкой мыши любую из выделенных вкладок и выберите «Переместить» или «Копировать…» .

- В диалоговом окне «Перемещение или копирование» выполните следующие действия:
- В раскрывающемся списке «Переместить выбранные листы в книгу» выберите целевую книгу, в которую вы хотите объединить другие файлы.
- Укажите, где именно должны быть вставлены вкладки. В нашем случае мы выбираем вариант вставки в конец списка.
- Установите флажок «Создать копию», если хотите, чтобы исходные данные оставались оригинальном файле.
- Нажмите ОК , чтобы завершить операцию.
Чтобы объединить вкладки из нескольких файлов Excel, повторите описанные выше шаги для каждой книги отдельно.
Как объединить файлы Excel с VBA
Если у вас есть несколько файлов Excel, которые необходимо объединить в один файл, более быстрым способом будет автоматизировать процесс с помощью макроса VBA.
Ниже вы найдете код VBA, который копирует все листы из всех файлов Excel, которые вы выбираете, в одну книгу. Этот макрос MergeExcelFiles написан Алексом.
Важное замечание! Макрос работает со следующим ограничением — объединяемые файлы не должны быть открыты физически или находиться в памяти, в буфере обмена. В таком случае вы получите ошибку во время выполнения.
Sub MergeExcelFiles() Dim fnameList, fnameCurFile As Variant Dim countFiles, countSheets As Integer Dim wksCurSheet As Worksheet Dim wbkCurBook, wbkSrcBook As Workbook fnameList = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Choose Excel files to merge", MultiSelect:=True) If (vbBoolean <> VarType(fnameList)) Then If (UBound(fnameList) > 0) Then countFiles = 0 countSheets = 0 Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Set wbkCurBook = ActiveWorkbook For Each fnameCurFile In fnameList countFiles = countFiles + 1 Set wbkSrcBook = Workbooks.Open(Filename:=fnameCurFile) For Each wksCurSheet In wbkSrcBook.Sheets countSheets = countSheets + 1 wksCurSheet.Copy after:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count) Next wbkSrcBook.Close SaveChanges:=False Next Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic MsgBox "Processed " & countFiles & " files" & vbCrLf & "Merged " & countSheets & " worksheets", Title:="Merge Excel files" End If Else MsgBox "No files selected", Title:="Merge Excel files" End If End Sub
Как добавить этот макрос в книгу
Если вы хотите вставить макрос в свою книгу, выполните следующие обычные действия:
- Нажать Alt + F11 , чтобы открыть редактор Visual Basic.
- Щелкните правой кнопкой мыши ThisWorkbook на левой панели и выберите «Вставить» > «Модуль» в контекстном меню.
- В появившемся окне (Окно кода) вставьте указанный выше код.
Более подробная инструкция описана в разделе Как вставить и запустить код VBA в Excel.
Кроме того, вы можете загрузить макрос в файле Excel, открыть его в этой книге (включить выполнение макросов, если будет предложено), а затем переключиться на свою собственную книгу и нажать Alt + F8 для его запуска. Если вы новичок в использовании макросов в Excel, следуйте подробным инструкциям ниже.
Как использовать макрос MergeExcelFiles
Откройте файл Excel, в котором вы хотите объединить листы из других книг, и выполните следующие действия:

- Нажмите комбинацию Alt + F8 , чтобы открыть окно диалога.
- В разделе « Имя макроса» выберите MergeExcelFiles и нажмите «Выполнить».
- Откроется стандартное окно проводника, вы выберите одну или несколько книг, которые хотите объединить, и нажмите «Открыть» . Чтобы выбрать несколько файлов , удерживайте нажатой клавишу Ctrl, указывая на их имена.
В зависимости от того, сколько файлов вы выбрали, дайте макросу несколько секунд или минут для их обработки. После завершения всех операций он сообщит вам, сколько файлов было обработано и сколько листов было объединено:

Как объединить несколько файлов с помощью Ultimate Suite.
Если вам не очень комфортно с VBA и вы ищете более простой и быстрый способ объединить файлы Excel, обратите внимание на инструмент «Копирование листов (Copy Sheets)» — одну из более чем 60 функций, включенных в невероятно функциональную программу Ultimate Suite for Excel. Она работает в версиях Excel 2010-2019.

- В диалоговом окне выберите файлы (а в них — листы), которые вы хотите объединить, и нажмите «Далее (Next)» .

Советы:
- Чтобы выбрать все листы в определенной книге, просто поставьте галочку в поле рядом с именем книги, и все они в этом файле будут выбраны автоматически.
- Чтобы объединить листы из закрытых книг, нажмите кнопку «Добавить файлы…» и выберите столько книг, сколько нужно. Это добавит выбранные файлы только в окно копирования, не открывая их в Excel.
- По умолчанию копируются все данные. Однако, в разных листах можно выбрать разные диапазоны для объединения. Чтобы скопировать только определенную область, наведите указатель мыши на имя вкладки, затем щелкните значок
и выберите нужный диапазон. - При необходимости укажите один или несколько дополнительных параметров и нажмите «Копировать» . На снимке скриншоте а ниже показаны настройки по умолчанию: Вставить все (формулы и значения) и Сохранить форматирование.

Дайте мастеру копирования листов несколько секунд для обработки и наслаждайтесь результатом!
этой странице есть подробное описание всех возможностей работы мастера копирования.
Чтобы поближе познакомиться с этим и другими инструментами для Excel, вы можете загрузить ознакомительную версию Ultimate Suite.
Итак, я надеюсь, вы получили ответ на вопрос — как быстро объединить несколько файлов Excel в один.