Как соединить данные из разных книг Excel в одну таблицу
Объединить несколько файлов Excel в один можно тремя способами: простым копированием (для 2–3 файлов), через встроенный инструмент Power Query (для регулярных отчетов) или с помощью макроса VBA (для полной автоматизации). Самый надежный и быстрый метод для большого количества файлов — использование Power Query, так как он позволяет обновлять сводную таблицу одной кнопкой при добавлении новых исходников.
Ниже приведены подробные инструкции для каждого метода.
Все описанные способы работают в актуальных версиях Excel для Windows (2016, 2019, 2021, 365) и macOS. Интерфейс может незначительно отличаться, но логика действий сохраняется.
Способ 1: Ручное копирование (для разовых задач)
Этот метод подходит, если вам нужно быстро склеить 2–3 небольшие таблицы и вы не планируете повторять эту операцию регулярно.
Пошаговый алгоритм:
- Откройте все файлы, которые нужно объединить.
- Создайте новую книгу («Сводная_таблица.xlsx»).
- В первом файле выделите область данных (без заголовков, если они будут общими, или с заголовками для первого файла). Нажмите
Ctrl + C. - Перейдите в новую книгу, выберите ячейку
A1и нажмитеCtrl + V. - Для следующих файлов:
- Выделите данные (только значения, без шапки таблицы).
- Вставьте их в новую книгу строго под предыдущими данными.
- Сохраните результат.
При ручном копировании легко ошибиться и пропустить строки или дважды вставить заголовки. Всегда проверяйте итоговую таблицу на наличие дублей шапок посередине данных.
Способ 2: Автоматическое слияние через Power Query (рекомендуемый)
Power Query — это мощный инструмент внутри Excel, который умеет брать данные из всех файлов в указанной папке и собирать их в единую таблицу. Это лучший выбор, если структура файлов одинаковая (одинаковые названия столбцов).
Инструкция по настройке:
- Подготовка: Создайте отдельную папку на компьютере и поместите туда все Excel-файлы, которые нужно объединить. Убедитесь, что других файлов там нет.
- Запуск: Откройте пустой файл Excel. Перейдите на вкладку Данные (Data).
- Импорт: Нажмите Получить данные → Из файла → Из папки.
- Выбор пути: Укажите путь к папке с файлами и нажмите «Открыть».
- Объединение: В появившемся окне предпросмотра нажмите кнопку Объединить (Combine) → Объединить и преобразовать данные.
- Примечание: Если система спросит пример файла, выберите любой из списка.
- Редактор: Откроется окно редактора Power Query. Здесь можно удалить лишние столбцы или отфильтровать данные. Обычно стандартных настроек достаточно.
- Загрузка: Нажмите кнопку Закрыть и загрузить (Close & Load) в левом верхнем углу.
Теперь в вашем файле появится новая таблица со всеми данными.
Как обновлять данные? Когда появятся новые файлы за следующий месяц, просто положите их в ту же папку. Затем откройте ваш сводный файл, кликните правой кнопкой мыши по таблице и выберите Обновить. Данные подтянутся автоматически.
Способ 3: Полная автоматизация через макрос VBA
Если вам нужно объединять файлы сложным образом или вы хотите создать кнопку «Сделать всё за секунду», используйте макрос. Этот способ требует сохранения файла в формате .xlsm.
Как запустить готовое решение:
- Создайте новую книгу, нажмите
Alt + F11(откроется редактор VBA). - В меню выберите Insert → Module.
- Вставьте код (см. пример ниже) и сохраните файл как Книга с поддержкой макросов (.xlsm).
- Запустите макрос через
Alt + F8, выбрав имя процедуры.
Пример простого кода для объединения листов: Этот скрипт берет все файлы из выбранной папки и копирует их содержимое на один лист.
Sub MergeFiles()
Dim FolderPath As String, FileName As String
Dim ws As Worksheet, wsMaster As Worksheet
Dim wbSource As Workbook, wbMaster As Workbook
Dim LastRow As Long, NextRow As Long
' Настройка мастер-листа
Set wbMaster = ThisWorkbook
Set wsMaster = wbMaster.Sheets(1)
wsMaster.Name = "Сводная"
' Выбор папки
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Выберите папку с файлами"
If .Show = 0 Then Exit Sub
FolderPath = .SelectedItems(1) & "\"
End With
FileName = Dir(FolderPath & "*.xlsx")
NextRow = 1 ' Строка для вставки (заголовки копируются только один раз)
Application.ScreenUpdating = False
Do While FileName <> ""
If FileName <> wbMaster.Name Then
Set wbSource = Workbooks.Open(FolderPath & FileName)
Set ws = wbSource.Sheets(1) ' Берем первый лист
' Копирование заголовков только для первого файла
If NextRow = 1 Then
ws.Rows(1).Copy Destination:=wsMaster.Rows(1)
NextRow = 2
End If
' Копирование данных без заголовка
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
If LastRow > 1 Then
ws.Range("A2", ws.Cells(LastRow, ws.Columns.Count).End(xlToLeft)).Copy _
Destination:=wsMaster.Cells(NextRow, 1)
NextRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 1
End If
wbSource.Close SaveChanges:=False
End If
FileName = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "Готово! Файлы объединены."
End Sub
Сравнение методов
| Метод | Сложность | Когда использовать | Обновление данных |
|---|---|---|---|
| Ручное копирование | Низкая | 2–3 файла, разовая задача | Вручную |
| Power Query | Средняя | Десятки файлов, регулярные отчеты | Одна кнопка «Обновить» |
| Макрос VBA | Высокая | Сложная логика, создание своих инструментов | Автоматически при запуске |
Частые ошибки при объединении
- Разная структура столбцов. Если в одном файле колонка называется «Дата», а в другом «Даты», Power Query создаст два разных столбца. Приведите заголовки к единому виду перед объединением.
- Лишние строки в исходниках. Часто в файлах есть «подвалы» с итоговыми суммами. При слиянии они попадут в середину общей таблицы и испортят формулы. Удаляйте их в исходных файлах или фильтруйте в Power Query.
- Формат ячеек. Иногда даты в одном файле текстовые, а в другом — числовые. После объединения проверьте формат столбцов.
FAQ
Можно ли объединить файлы, если они находятся в разных папках? Да, но для этого в Power Query нужно создавать отдельные запросы для каждой папки, а затем объединять результаты функцией «Добавить запросы» (Append Queries). Проще всего собрать все файлы в одну директорию.
Что делать, если файлов очень много (сотни)? Excel может начать работать медленно. В таком случае лучше загружать данные не на лист, а в Модель данных (при загрузке из Power Query выберите «Только создать подключение» и отметьте галочку «Добавить в модель данных»). Это позволит анализировать миллионы строк через сводные таблицы без тормозов.
Работает ли это в онлайн-версии Excel? Нет. Power Query и макросы VBA доступны только в десктопных версиях приложения для ПК и Mac. В веб-версии доступно только ручное копирование.