Как объединить несколько файлов excel в один power query
Перейти к содержимому

Как объединить несколько файлов excel в один power query

  • автор:

Объединение таблиц c Power Query

По своим наблюдениям, я замечал, что многие мои коллеги — при объединении 2-х и более таблиц в Excel используют методы ручного копирования данных, при соединении таблиц по одинаковым столбцам данных используют функцию ВПР. Это, конечно удобно, когда речь идет о небольших объемах данных. Но, что делать, если Вам необходимо обработать большие массивы данных из разных источников и из большого количества таблиц? В данном случае, Вам подойдет инструмент Power Query.

Как быстро можно объединить 2 и более таблицы в одну путем добавления данных:

1.В программе Excel импортируем данные из 2-х или более источников, например из книги *xlsx.

Объединение данных из нескольких книг в Excel (с помощью Power Query)

Объединение данных из нескольких книг в Excel (с помощью Power Query)

Power Query может оказаться большим подспорьем, если вы хотите объединить несколько книг в одну.

Например, предположим, что у вас есть данные о продажах для разных регионов (Восток, Запад, Север и Юг). Вы можете объединить эти данные из разных книг в один лист с помощью Power Query.

Если у вас есть эти книги в разных местах / папках, рекомендуется переместить все их в одну папку (или создать копию и поместить эту копию книги в ту же папку).

Итак, для начала у меня есть четыре книги в папке (как показано ниже).

В этом руководстве я рассмотрю три сценария, в которых вы можете объединить данные из разных книг с помощью Power Query:

  • Каждая книга содержит данные в таблице Excel, и все имена таблиц одинаковы.
  • В каждой книге есть данные с одинаковым именем листа. Это может быть в том случае, если во всех книгах есть лист с именем «сводка» или «данные», и вы хотите объединить все это.
  • В каждой книге много листов и таблиц, и вы хотите объединить определенные таблицы / листы. Этот метод также может быть полезен, если вы хотите объединить таблицы / листы, у которых нет согласованного имени.

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

Каждая книга содержит данные в таблице Excel с одинаковой структурой.

Приведенный ниже метод будет работать, если ваши таблицы Excel имеют одинаковую структуру (те же имена столбцов).

Количество строк в каждой таблице может быть разным.

Не беспокойтесь, если в некоторых таблицах Excel есть дополнительные столбцы. Вы можете выбрать одну из таблиц в качестве шаблона (или в качестве «ключа», как его называет Power Query), и Power Query будет использовать ее для объединения с ней всех других таблиц Excel.

Если в других таблицах есть дополнительные столбцы, они будут проигнорированы, и будут объединены только те, которые указаны в шаблоне / ключе. Например, если выбранная таблица шаблона / ключа имеет 5 столбцов, а одна из таблиц в какой-либо другой книге имеет 2 дополнительных столбца, эти дополнительные столбцы будут проигнорированы.

Теперь у меня есть четыре книги в папке, которые я хочу объединить.

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

Вот шаги, чтобы объединить данные из этих книг в одну книгу (в виде единой таблицы).

  1. Перейдите на вкладку "Данные".
  2. В группе «Получить и преобразовать» щелкните раскрывающееся меню «Новый запрос».
  3. Наведите курсор на «Из файла» и нажмите «Из папки».
  4. В диалоговом окне «Папка» введите путь к папке, в которой находятся файлы, или нажмите «Обзор» и найдите папку.
  5. Щелкните ОК.
  6. В открывшемся диалоговом окне нажмите кнопку объединения.
  7. Щелкните «Объединить и загрузить».
  8. В открывшемся диалоговом окне «Объединить файлы» выберите таблицу на левой панели. Обратите внимание, что Power Query показывает вам таблицу из первого файла. Этот файл будет действовать как шаблон (или ключ) для объединения других файлов. Power Query теперь будет искать «Таблицу 1» в других книгах и объединять ее с этой.
  9. Щелкните ОК.

Это загрузит окончательный результат (объединенные данные) в ваш активный рабочий лист.

Обратите внимание, что вместе с данными Power Query автоматически добавляет имя книги в качестве первого столбца объединенных данных. Это помогает отслеживать, какие данные были получены из какой книги.

Если вы хотите сначала отредактировать данные перед загрузкой в ​​Excel, на шаге 6 выберите «Объединить и отредактировать». Это откроет окончательный результат в редакторе Power Query, где вы сможете редактировать данные.

Несколько вещей, которые нужно знать:

  • Если вы выберете таблицу Excel в качестве шаблона (на шаге 7), Power Query будет использовать имена столбцов в этой таблице для объединения данных из других таблиц. Если в других таблицах есть дополнительные столбцы, они будут проигнорированы. Если в этих других таблицах нет столбца, который есть в вашей таблице шаблонов, Power Query просто поместит для него «null».
  • Столбцы необязательно располагать в том же порядке, в котором Power Query использует заголовки столбцов для сопоставления столбцов.
  • Поскольку вы выбрали Table1 в качестве ключа, Power Query будет искать Table1 во всех книгах и объединять все это. Если он не найдет таблицу Excel с таким же именем (Таблица1 в этом примере), Power Query выдаст ошибку.

Добавление новых файлов в папку

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

Мы объединили данные из четырех разных книг в одну таблицу за несколько секунд, даже не открывая никаких книг.

Но это не все.

Настоящая МОЩНОСТЬ Power Query заключается в том, что теперь, когда вы добавляете больше файлов в папку, вам не нужно повторять ни один из этих шагов.

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

Например, в приведенном выше примере, если я добавлю новую книгу — ‘Mid-West.xlsx’ в папку и обновите запрос, он сразу же предоставит мне новый комбинированный набор данных.

Вот как обновить запрос:

  • Щелкните правой кнопкой мыши таблицу Excel, которую вы загрузили на рабочий лист, и нажмите «Обновить».
  • Щелкните правой кнопкой мыши запрос на панели «Запрос книги» и выберите «Обновить».
  • Перейдите на вкладку «Данные» и нажмите «Обновить».

В каждой книге есть данные с одинаковым именем листа.

Если у вас нет данных в таблице Excel, но все имена листов (из которых вы хотите объединить данные) одинаковы, вы можете использовать метод, показанный в этом разделе.

Есть несколько вещей, с которыми нужно быть осторожными, когда это просто табличные данные, а не таблица Excel.

  • Имена рабочих листов должны быть такими же. Это поможет Power Query просмотреть ваши книги и объединить данные из листов с одинаковыми именами в каждой книге.
  • Power Query чувствителен к регистру. Это означает, что таблицы с именами «данные» и «данные» считаются разными. Точно так же столбец с заголовком «Магазин» и столбец с заголовком «Магазин» считаются разными.
  • Несмотря на то, что заголовки столбцов должны совпадать, не обязательно иметь одинаковый порядок. Если столбец 2 в «East.xlsx» является столбцом 4 в «West.xlsx», Power Query будет правильно сопоставить его, сопоставив заголовки.

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

В этом примере у меня есть папка с четырьмя файлами.

В каждой книге у меня есть рабочий лист с названием «Данные», который содержит данные в следующем формате (обратите внимание, что это не таблица Excel).

Вот шаги, чтобы объединить данные из нескольких книг в один рабочий лист:

  1. Перейдите на вкладку "Данные".
  2. В группе «Получить и преобразовать» щелкните раскрывающееся меню «Новый запрос».
  3. Наведите курсор на «Из файла» и нажмите «Из папки».
  4. В диалоговом окне «Папка» введите путь к папке, в которой находятся файлы, или нажмите «Обзор» и найдите папку.
  5. Щелкните ОК.
  6. В открывшемся диалоговом окне нажмите кнопку объединения.
  7. Щелкните «Объединить и загрузить».
  8. В открывшемся диалоговом окне «Объединить файлы» выберите «Данные» на левой панели. Обратите внимание, что Power Query показывает имя рабочего листа из первого файла. Этот файл будет действовать как ключ / шаблон для объединения других файлов. Power Query просмотрит каждую книгу, найдет лист с именем «Данные» и объединит все это.
  9. Щелкните ОК. Теперь Power Query просмотрит каждую книгу, найдет в ней лист с именем «Данные», а затем объединит все эти наборы данных.

Это загрузит окончательный результат (объединенные данные) в ваш активный рабочий лист.

Если вы хотите сначала отредактировать данные перед загрузкой в ​​Excel, на шаге 6 выберите «Объединить и отредактировать». Это откроет окончательный результат в редакторе Power Query, где вы сможете редактировать данные.

В каждой книге есть данные с разными именами таблиц или именами листов.

Иногда вы не можете получить структурированные и согласованные данные (например, таблицы с тем же именем или рабочий лист с тем же именем).

Например, предположим, что вы получаете данные от кого-то, кто создал эти наборы данных, но назвал рабочие листы как Восточные данные, Западные данные, Северные данные и Южные данные.

Или, возможно, человек создал таблицы Excel, но с другими именами.

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

  1. Перейдите на вкладку "Данные".
  2. В группе «Получить и преобразовать» щелкните раскрывающееся меню «Новый запрос».
  3. Наведите курсор на «Из файла» и нажмите «Из папки».
  4. В диалоговом окне «Папка» введите путь к папке, в которой находятся файлы, или нажмите «Обзор» и найдите папку.
  5. Щелкните ОК.
  6. В открывшемся диалоговом окне нажмите кнопку «Редактировать». Откроется редактор Power Query, в котором вы увидите подробную информацию обо всех файлах в папке.
  7. Удерживая клавишу Control, выберите столбцы «Содержание» и «Имя», щелкните правой кнопкой мыши и выберите «Удалить другие столбцы». Это удалит все остальные столбцы, кроме выбранных.
  8. На ленте редактора запросов нажмите «Добавить столбец», а затем нажмите «Пользовательский столбец».
  9. В диалоговом окне «Добавить настраиваемый столбец» назовите новый столбец «Импорт данных» и используйте следующую формулу. = Excel.Workbook ([КОНТЕНТ]). Обратите внимание, что в этой формуле учитывается регистр, и вам нужно ввести ее точно так, как я показал здесь.
  10. Теперь вы увидите новый столбец, в котором записана таблица. Теперь позвольте мне объяснить, что здесь произошло. Вы предоставили Power Query имена книг, а Power Query извлек такие объекты, как рабочие листы, таблицы и именованные диапазоны из каждой книги (которая на данный момент находится в ячейке таблицы). Вы можете щелкнуть пустое пространство рядом с текстовой таблицей, и вы увидите информацию внизу. В этом случае, поскольку у нас есть только одна таблица и один рабочий лист в каждой книге, вы можете увидеть только две строки.
  11. Щелкните значок с двойной стрелкой вверху столбца «Импорт данных».
  12. В открывшемся окне данных столбца снимите флажок «Использовать исходный столбец в качестве префикса» и нажмите кнопку «ОК».
  13. Теперь вы увидите развернутую таблицу, в которой вы видите по одной строке для каждого объекта в таблице. В этом случае для каждой книги объект листа и объект таблицы указываются отдельно.
  14. В столбце «Вид» отфильтруйте список, чтобы отображалась только таблица.
  15. Удерживая клавишу Control, выберите столбец «Имя и данные». Теперь щелкните правой кнопкой мыши и удалите все остальные столбцы.
  16. В столбце «Данные» щелкните значок с двойной стрелкой в ​​правом верхнем углу заголовка данных.
  17. В открывшемся поле данных столбца нажмите ОК. Это объединит данные во всех таблицах и отобразит их в Power Query.
  18. Теперь вы можете выполнить любое необходимое преобразование, а затем перейти на вкладку «Главная» и нажать «Закрыть и загрузить».

Теперь позвольте мне попытаться быстро объяснить, что мы здесь сделали. Поскольку имена листов или таблиц не были согласованными, мы использовали формулу = Excel.Workbook для получения всех объектов книг в Power Query. Эти объекты могут включать листы, таблицы и именованные диапазоны. Когда у нас были все объекты из всех файлов, мы отфильтровали их, чтобы рассматривать только таблицы Excel. Затем мы расширили данные в таблицах и объединили все это.

В этом примере мы отфильтровали данные, чтобы использовать только таблицы Excel (на шаге 13). Если вы хотите объединить листы, а не таблицы, вы можете фильтровать листы.

Примечание. Этот метод даст вам объединенные данные, даже если есть несоответствие в именах столбцов. Например, если в East.xlsx у вас есть столбец с ошибкой, вы получите 5 столбцов. Power Query заполнит данные в столбцах, если найдет их, а если не сможет найти столбец, сообщит значение как «null».

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

Теперь, если у вас есть больше книг, из которых вам нужно объединить данные, просто скопируйте и вставьте их в папку и обновите Power Query.

Power Query Базовый №6. Объединить все файлы из папки по вертикали

В этом уроке вы узнаете как объединить все таблицы, которые находятся в разных книгах Excel из одной директории. Например, данные по продажам каждого месяца находятся в отдельном файле. Всего таких файлов довольно много. Вам нужно предварительно каждый файл обработать, а потом все файлы объединить. Делать это вручную очень долго, мучительно и может повлечь за собой много ошибок. В Power Query решить такую задачу проще простого. Смотрите видео и повторяйте за мной.

В этом видео вы узнаете:

  • Как объединить все таблицы в одной папке с Power Query
  • Как сделать консолидацию всех файлов в папке в Excel
  • Как объединить по вертикали все файлы в одной папке
Решение

Разберем 2 примера. Первым пример будет простым. Мы объединим файлы без предварительной обработки.

Втором пример будет немного посложнее. Мы объединим файлы с предварительной обработкой, но будет использовать только пользовательский интерфейс.

Объединить файлы из одной папки без предварительной обработки

Если предварительная обработка не требуется, то задача решается в 2 логических этапа:

  1. На первом этапе мы подключимся к папке и оставим только нужный нам столбец и строки с необходимыми данными
  2. Развернем табличный столбец и почистим данные
Объединить файлы из одной папки с предварительной обработкой

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

Сначала нужно подключиться к папке с файлами и развернуть столбец Content, нажав на кнопку:

После нажатия на кнопку Power Query автоматически создаст запросы, функции и параметры:

Все, что вы проделаете с запросом «Пример файла» автоматически применится к каждому файлу в папке.

То, что находится в данном примере находится в запросе sales — это итоговая результирующая таблица.

Импорт и консолидация таблиц Excel через Power Query

Power Query умеет подключаться к разным источникам. Далее рассмотрим, как получить данные из книги Excel.

Таблицы Excel

Лучше всего данные хранить в таблице Excel, это самый удобный и распространенный источник для Power Query. На ленте даже есть специальная кнопка.

Чтобы загрузить таблицу в редактор Power Query, достаточно выделить любую ее ячейку и нажать Данные → Получить и преобразовать данные → Из таблицы/диапазона.

Импорт данных в Power Query из таблицы Excel

Примечание. В вашей версии Excel расположение кнопок и их названия могут отличаться.

Если то же самое проделать с обычным диапазоном, то Excel вначале преобразует диапазон в таблицу Excel, а потом запустит Power Query.

Окно редактора Power Query

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

Данные находятся в Power Query. Новые значения, внесенные в исходную таблицу, автоматически попадут в запрос после его обновления. Далее в редакторе Power Query делают обработку данных и выгружают либо в виде таблицы Excel, либо оставляют в памяти Excel в виде подключения.

Выгрузка данных из Power Query

Именованный диапазон Excel

Источником для Power Query может быть не только таблица Excel. Например, вы получили красивый отформатированный отчет и не хотите вносить в него изменения. Тогда нужно использовать именованный диапазон. Самый простой способ создать именованный диапазон – это выделить область на листе и ввести название в поле Имя.

Создание именованного диапазона через поле Имя

Либо выполнить команду Формулы → Определенные имена → Присвоить имя. В Excel будет создан новый объект, к которому можно обращаться, например, в формулах. Диапазон виден в Диспетчере имен.

Диспетчер имен

Здесь перечислены все именованные диапазоны, формулы и таблицы. Среди них есть и только что созданный Отчет.

Теперь можно стать на любую ячейку внутри именованного диапазона (или выбрать его из выпадающего списка в поле Имя) и вызвать ту же команду: Данные → Получить и преобразовать данные → Из таблицы/диапазона. Произойдет загрузка данных в Power Query.

Power Query с именованным диапазоном

Такой способ позволяет «не портить» исходные данные. Но у него есть и очевидный недостаток: новые строки, которые выйдут за пределы именованного диапазона, не попадут в запрос.

Динамический именованный диапазон Excel

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

Внести статичное имя в поле Имя на этот раз не получится. Поэтому заходим в Формулы → Определенные имена → Задать имя (или нажимаем Создать в Диспетчере имен), указываем название будущего динамического диапазона ДинамОтчет и внизу вместо ссылки записываем формулу:

Ко всем ссылкам этой формулы Excel еще автоматически добавит название листа.

Динамический диапазон в диспетчере имен

Смысл формулы следующий. Верхняя левая ячейка диапазона фиксируется ($A$2), а правая нижняя определяется формулой, которая возвращает адрес последней заполненной строки в столбце B.

Но не все так просто. Excel видит это имя лишь как формулу, а не диапазон. Как же его увидит Power Query? Делаем ход конем.

Создаем пустой запрос Power Query Данные → Получить и преобразовать данные → Получить данные → Из других источников → Пустой запрос. Открывается пустой запрос, где в строке формул нужно ввести:

После ввода формулы (нажатием Enter) Power Query обратится к текущей книге и выведет все объекты, среди которых есть и наш динамический диапазон ДинамОтчет.

Все объекты с данными книги Excel в виде списка

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

Чтобы извлечь содержимое объекта, в этой же строке правой кнопкой мыши кликаем по Table, далее выбираем Детализация.

Детализация

Power Query разворачивает таблицу и даже делает некоторые шаги обработки: повышает заголовки и задает нужный формат для столбцов.

Загрузка динамического диапазона

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

Вот такие приемы импорта данных в Power Query из книги Excel. Самый распространенный из них – это импорт из таблицы Excel. Тем не менее, в случае необходимости можно прибегнуть к альтернативам, создав именованный или динамический именованный диапазон.

Консолидация данных из разных таблиц Excel

Одна из насущных задач, с которыми сталкиваются пользователи, – консолидация данных. Под консолидацией понимается объединение нескольких таблиц в одну. До появления Power Query это была довольно трудоемкая операция, особенно, если процесс требовал автоматизации. Хотя в эксель есть специальная команда Данные → Работа с данными → Консолидация, пользоваться ей не удобно. Мне, по крайней мере. Появление Power Query в корне изменило представление о том, как нужно объединять таблицы.

Рассмотрим пример. В некоторый файл каждый месяц вносится отчет о продажах в формате таблицы Excel. Каждая таблица при этом имеет соответствующее название: Январь_2018, Февраль_2018 и т.д. Необходимо объединить все таблицы книги в одну. Как бы скопировать и вставить одну под другой, создав при этом дополнительный столбец, указывающий, к какой таблице принадлежит конкретная строка. Задача не одноразовая, а с заделом на будущее, поэтому нужно предусмотреть появление в этом файле новых таблиц.

Процесс начинается с запуска пустого запроса: Данные → Получить и преобразовать данные → Создать запрос → Из других источников → Пустой запрос

Затем в строке формул вводим знакомую команду

Power Query показывает все таблицы в текущей книге.

Все таблицы в книге Excel

Их нужно развернуть кнопкой с двумя стрелками в названии поля Content (на скриншоте ниже выделено красным кружком).

Кнопка для разворачивания таблиц

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

Все таблицы в Power Query

Все таблицы находятся на одном листе, а рядом колонка с названием источника, откуда взята каждая строка.

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

Визуально мы наблюдаем и месяц, и год. Но Power Query такое название воспринимает, как текст. Поэтому делаем следующее.

Удалим нижнее подчеркивание. Правой кнопкой мыши по названию столбца Name → Замена значений.

Замена

В следующем окне настроек указываем, что меняем _ на пусто, то есть в нижнем поле ничего не указываем.

Заполнение окна для замены

Подчеркивание удаляется из названия.

Удаленное подчеркивание

Поиск и замена здесь работает так же, как и в обычном Excel.

Далее запускаем команду Преобразование → Столбец «Дата и время» → Дата → Выполнить анализ.

Анализ текста для преобразования в дату

Power Query распознает дату и меняет формат колонки. Мы также переименовываем столбец на Период.

Поле с датой

Полученную таблицу можно использовать для анализа данных. Выгрузим ее на лист Excel.
Главная → Закрыть и загрузить.

Выгруженная таблица с ошибками

Но что-то пошло не так. Во-первых, внизу таблицы пустая строка; во-вторых, при выгрузке произошла одна ошибка. Обновим запрос (справа от названия запроса значок обновления).

После обновления запроса ошибок еще больше

Что-то еще больше пошло не так. Даты исчезли, снизу таблицы добавились новые строки, а количество ошибок уже 19. Спокойствие, только спокойствие! Дело вот в чем.

Помните, на первом шаге мы получили все таблицы из файла? Так ведь и выгруженная таблица – это тоже таблица! Получается, Power Query взял 3 исходных таблицы, обработал, выгрузил на лист Excel и на следующем круге видит уже 4 таблицы!

Таблица выхода в общем запросе

При повторном обновлении запрос захватывает их все, а т.к. таблица выхода имеет другую структуру, то возникают ошибки.

Короче, из запроса нужно исключить таблицу, которая получается на выходе (Запрос1). Есть разные подходы, самый простой – это добавить шаг фильтрации. Выделяем в правой панели первый шаг Источник, открываем фильтр в колонке с названиями, снимаем галку с таблицы Запрос1 → Ok.

Выгруженная таблица без ошибок

Снова выгружаем таблицу в Excel и на этот раз все в порядке.

Выгруженная таблица с запросом без ошибок

Сделаем с помощью сводной таблицы маленький отчет по месяцам.

Сводная таблица по результатам запроса Power Query

Прошло время, и в файл добавили новую таблицу с продажами за апрель.

Продажи за следующий месяц

Требуется обновить сводный отчет. Представьте на минуту, как это происходит в обычном Эксель: таблица копируется в самый низ общего источника, продлевается колонка с датой, изменяется диапазон для сводной таблицы, обновляется весь отчет.

А вот, как это выглядит при использовании Power Query.

Достаточно два раза нажать кнопку Обновить все (первый раз – для обновления запроса, второй – для сводной таблицы).

Обновленный отчет на основе запроса Power Query

На добавление в отчет новых данных вместе с их обработкой потребовалось несколько секунд.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *