Вы работали со сводными таблицами Excel? Если нет – нужно срочно начинать. Это супер-инструмент, который позволяет быстро и просто обрабатывать большие объемы данных. А если вы с ними все-таки работали, то я как экстрасенс-капитан-очевидность могу точно сказать, что вы сталкивались с ситуацией, когда нужно построить сводную таблицу на основе нескольких источников данных. Например, с помощью нескольких одинаковых таблиц Excel, копируя их одну под другой. Или дополняя свою таблицу новыми столбцами и аналитиками.
Добавление или объединение таблиц?
Чаще всего, чтобы объединить данные в Excel, пользователи копируют таблицы одну под другую. Или пишут формулы по типу ВПР, если в таблицу нужно добавить новые столбцы или аналитики. Но вы наверняка знаете, что самый удобный инструмент для объединения данных в Excel – это Power Query. Там есть два принципиальных способа:
- По вертикали – добавление таблицы под таблицу. Полезно, когда таблицы с одинаковой шапкой находятся в разных файлах или на разных листах.
- По горизонтали – слияние таблиц, похожее на ВПР. А здесь есть еще варианты — не только аналогичные ВПР, но и ВПР-наоборот, и ВПР-неВПР… Целых шесть видов объединения таблиц.
Разберем, чем эти способы отличаются друг от друга.
Вариант 1. Добавление таблицы под таблицу
Приём с добавлением таблиц применяется, когда у вас есть несколько таблиц с одинаковой шапкой, но они находятся в разных местах, например на разных листах или в нескольких файлах. Тогда, чтобы построить итоговую сводную, мы можем просто строки одной таблицы добавить в другую. Обращаю внимание, что здесь данные таблиц объединяются как-бы по вертикали.
Как на основе таблиц с одинаковой шапкой построить единую базу? Добавив таблицы одну под другую
Раньше процедуру добавления строк из одной таблицы в другую можно было выполнить с помощью копирования. Отсюда много ручной работы при внесении новых данных (ну, или писали макросы). Однако с момента появления в Excel надстройки Power Query у нас появилась возможность добавлять таблицы одну под другую несколькими щелчками мыши. Как это сделать – смотрите в видео.
Вариант 2. Объединение таблиц
Объединение таблиц применяется, когда у вас есть две таблицы (шапки у них скорее всего разные), и одна таблица дополняет другую. Например, в отчете продажи показаны по городам, а у вас просят вывести информацию по областям. Тогда потребуется объединение по горизонтали:
Одна таблица дополняет другую с помощью объединения по общему столбцу
В «обычном» Excel это делается с помощью формулы ВПР или других формул с похожим функционалом. Power Query предлагает нам больше способов объединения. Используя этот инструмент, мы можем не «просто» связать таблицы, но и сделать это по определенным условиям.
Типы объединения данных в Power Query
Power Query предлагает на выбор шесть различных способов соединения таблиц. Если посмотреть теорию про объединение данных, вы наверняка встретите примеры рисунков с кругами – схематичным изображением множеств или таблиц, которые мы хотим объединить.
- Внешнее соединение слева (все из первой таблицы, совпадающие из второй)
- Внешнее соединение справа (все из второй таблицы, совпадающие из первой)
- Полное внешнее (все строки из обеих таблиц)
- Внутреннее (только совпадающие строки)
- Анти-соединение слева (только строки в первой таблице)
- Анти-соединение справа (только строки во второй таблице)
Внешнее соединение справа
Разберем в способы объединения данных на примерах.
Внешнее соединение слева
Left Outer Join
Внешнее соединение слева наиболее часто применяется для объединения таблиц. Это то, что мы делаем в Excel с помощью формулы ВПР – из одной таблицы «перетаскиваем» данные в другую.
Когда вы выбираете «Внешнее соединение слева», к данным из первой таблицы добавляются все значения из второй таблицы, соответствующие столбцу поиска. Если во второй таблице нет искомых значений, вы получите null или «пусто».
Пример: объединим план продаж в штуках с плановыми ценами.
Добавьте таблицы в Power Query: вкладка Данные → Получить данные → Из других источников → Из таблицы / диапазона, или для новых версий Excel: вкладка Данные → Из таблицы / диапазона. Объедините запросы: вкладка Главная → Объединить запросы, выберите столбец слияния «Товар» и тип объединения «Внешнее соединение слева». На некоторые товары нет плановых цен, поэтому после объединения в столбце «цена» для этих товаров будет проставлен null.
Хотя в диалоговом окне таблицы расположены одна под другой (просто так удобнее технически), связь все равно горизонтальная. В диалоговом окне указывается столбец, по которому выполняется объединение.
Внешнее соединение справа
Right Outer Join
Тип соединения «Внешнее соединение справа» используется, если в первую таблицу нужно не только добавить новые столбцы, но и отфильтровать её. Вторая таблица используется как источник данных и управляет содержимым первой таблицы.
Что происходит, когда вы выбираете «Внешнее соединение справа»: из первой таблицы исчезнут все не найденные во второй таблице данные. Из второй таблицы будут добавлены те значения, которых нет в первой. Если посмотреть на рисунок, видно, что Внешнее соединение справа работает так же, как и Внешнее соединение слева, отличается только порядок расположения таблиц.
Пример: в первой таблице — ожидаемые среднемесячные продажи на одного покупателя, во второй – количество потенциальных покупателей. Объединим таблицы, чтобы запланировать будущие продажи.
Объединим таблицы, чтобы запланировать будущие продажи. Общий столбец для поиска — «Направление».
В результате объединения из таблицы «исчезли» данные по направлениям, где нет потенциальных покупателей.
Полное внешнее соединение
Full Outer Join
Этот тип соединения создает таблицу, в которой есть все строки и первой, и второй таблицы. С помощью общего столбца объединяются все строки таблиц.
Пример: в первой таблице приведен объем производства по дням, во второй – объем брака. Создадим общую таблицу.
Для создания общей таблицы используется Полное внешнее соединение. Для объединения используем общий столбец «дата». В результате получится отчет с датами и цифрами из первой и второй таблицы. В ячейках, где данные за аналогичные периоды были только в первой или только во второй таблице, стоит null.
Внутреннее соединение
Inner Join
Внутреннее соединение находит и оставляет только совпадающие строки из обеих таблиц. Если данные есть в одной из таблиц, но нет в другой, то в объединенном запросе они не появятся.
Таблицы объединяются с помощью общего столбца. При этом из первой таблицы исчезнут все не найденные в «общем» столбце второй таблицы строки. Из второй таблицы – исчезнут не найденные в первой.
Пример: есть два списка покупателей, принявших участие в акциях А и Б – по одному для каждой из акций. С помощью Внутреннего соединения получим список покупателей, участвовавших и в той, и в другой акции.
Поиск выполняется по общему столбцу «Покупатель». Результат — список покупателей, участвовавших в обеих акциях.
Анти-соединение слева
Left Anti Join
Если вам требуется исключить из таблицы ненужные строки, можно воспользоваться объединением с Анти-соединением слева. С помощью этого способа из первой таблицы будут исключены все строки, найденные во второй.
Пример: в первой таблице – записи о сделанных покупателям коммерческих предложениях, во второй – данные о продажах. С помощью Анти-соединения слева найдем покупателей, которые получили предложение, но не сделали покупку.
С помощью запроса исключим из первой таблицы найденных во второй покупателей. В результате получится список покупателей, которые не сделали покупки.
Анти-соединение справа
Right Anti Join
Анти-соединение справа работает так же, как и Анти-соединение слева. Разница здесь только в порядке расположения таблиц.
Пример: в первой таблице – отчет о выполненных задачах, во второй – список поставленных задач. Объединив таблицы с помощью Анти-соединения справа, найдем невыполненные задачи.
В результате объединения получим список невыполненных задач.
Кроме объединения таблиц с помощью запросов Power Query, такие операции можно выполнять и с помощью DAX-формул, применяя их в различных сочетаниях: GENERATEALL, NATURALLEFTOUTERJOIN, NATURALINNERJOIN, CROSSJOIN, FILTER+CROSSJOIN, GENERATE, EXCEPT и др.
Постановка задачи
Давайте разберем красивое решение для одной из весьма стандартных ситуаций, с которой рано или поздно сталкивается большинство пользователей Excel: нужно быстро и автоматически собрать данные из большого количества файлов в одну итоговую таблицу.
Предположим, что у нас есть вот такая папка, в которой содержится несколько файлов с данными из филиалов-городов:

Количество файлов роли не играет и может меняться в будущем. В каждом файле есть лист с именем Продажи, где расположена таблица с данными:

Количество строк (заказов) в таблицах, само-собой, разное, но набор столбцов везде стандартный.
Задача: собрать данные из всех файлов в одну книгу с последующим автоматическим обновлением при добавлении-удалении файлов-городов или строк в таблицах. По итоговой консолидированной таблице затем можно будет строить любые отчеты, сводные таблицы, фильтровать-сортировать данные и т.д. Главное — суметь собрать.
Подбираем оружие
Для решения нам потребуется последняя версия Excel 2016 (в нее нужный функционал уже встроен по умолчанию) или предыдущие версии Excel 2010-2013 с установленной бесплатной надстройкой Power Query от Microsoft (скачать ее можно здесь). Power Query — это супергибкий и супермощный инструмент для загрузки в Excel данных из внешнего мира с последующей их зачисткой и обработкой. Power Query поддерживает практически все существующие источники данных — от текстовых файлов до SQL и даже Facebook 
Если у вас нет Excel 2013 или 2016, то дальше можно не читать (шучу). В более древних версиях Excel подобную задачу можно реализовать только программированием макроса на Visual Basic (что весьма непросто для начинающих) или монотонным ручным копированием (что долго и порождает ошибки).
Шаг 1. Импортируем один файл как образец
Для начала давайте импортируем данные из одной книги в качестве примера, чтобы Excel «подхватил идею». Для этого создайте новую пустую книгу и…
- если у вас Excel 2016, то откройте вкладку Данные и выберите Создать запрос — Из файла — Из книги (Data — New Query- From file — From Excel)
- если у вас Excel 2010-2013 с установленной надстройкой Power Query, то откройте вкладку Power Query и выберите на ней Из файла — Из книги (From file — From Excel)
Затем в открывшемся окне переходим в нашу папку с отчетами и выбираем любой из файлов-городов (не играет роли какой именно, т.к. они все типовые). Через пару секунд должно появиться окно Навигатор, где нужно в левой части выбрать требуемый нам лист (Продажи), а в правой отобразится его содержимое:

Если нажать в правом нижнем углу этого окна кнопку Загрузить (Load), то таблица будет сразу импортирована на лист в исходном виде. Для одиночного файла — это хорошо, но нам нужно загрузить много таких файлов, поэтому мы пойдем немного другим путем и жмем кнопку Правка (Edit). После этого должен в отдельном окне отобразиться редактор запросов Power Query с нашими данными из книги:

Это очень мощный инструмент, позволяющий «допилить» таблицу под нужный нам вид. Даже поверхностное описание всех его функций заняло бы под сотню страниц, но, если совсем кратко, то с помощью этого окна можно:
- отфильтровывать ненужные данные, пустые строки, строки с ошибками
- сортировать данные по одному или нескольким столбцам
- избавляться от повторов
- делить слипшийся текст по столбцам (по разделителям, количеству символов и т.д.)
- приводить текст в порядок (удалять лишние пробелы, исправлять регистр и т.д.)
- всячески преобразовывать типы данных (превращать числа как текст в нормальные числа и наоборот)
- транспонировать (поворачивать) таблицы и разворачивать двумерные кросс-таблицы в плоские
- добавлять к таблице дополнительные столбцы и использовать в них формулы и функции на встроенном в Power Query языке М.
- …
Для примера, давайте добавим к нашей таблице столбец с текстовым названием месяца, чтобы потом проще было строить отчеты сводных таблиц. Для этого щелкните правой кнопкой мыши по заголовку столбца Дата и выберите команду Дублировать столбец (Duplicate Column), а затем щелкните правой кнопкой мыши по заголовку появившегося столбца-дубликата и выберите команды Преобразование — Месяц — Название месяца:

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

Исключить строки с ошибками или пустые строки, а также ненужных менеджеров или заказчиков можно с помощью простого фильтра:

Причем все выполненные преобразования фиксируются в правой панели, где их всегда можно откатить (крестик) или изменить их параметры (шестеренка):

Легко и изящно, не правда ли?
Шаг 2. Преобразуем наш запрос в функцию
Чтобы впоследствии повторить все сделанные преобразования данных для каждой импортируемой книги, нужно преобразовать наш созданный запрос в функцию, которая затем будет применяться, по очереди, ко всем нашим файлам. Сделать это, на самом деле, очень просто.
В редакторе запросов перейдите на вкладку Просмотр и нажмите кнопку Расширенный редактор (View — Advanced Editor). Должно открыться окно, где все наши предыдущие действия будут записаны в виде кода на языке М. Обратите внимание, что в коде жестко прописан путь к файлу, который мы импортировали для примера:

Теперь аккуратно вносим пару правок:

Смысл их прост: первая строка (filepath)=> превращает нашу процедуру в функцию с аргументом filepath, а ниже мы меняем фиксированный путь на значение этой переменной.
Все. Жмем на Готово и должны увидеть вот это:

Не пугайтесь, что пропали данные — на самом деле все ОК, все так и должно выглядеть 

Шаг 3. Собираем все файлы
Все самое сложное — позади, осталась приятная и легкая часть. Идем на вкладку Данные — Создать запрос — Из файла — Из папки (Data — New Query — From file — From folder) или, если у вас Excel 2010-2013, аналогично на вкладку Power Query. В появившемся окне указываем папку, где лежат все наши исходные файлы-города и жмем ОК. Следующим шагом должно открыться окно, где будут перечислены все найденные в этой папке (и ее подпапках) файлы Excel и детализация по каждому из них:

Жмем Изменить (Edit) и опять попадаем в знакомое окно редактора запросов.
Теперь нужно добавить к нашей таблице еще один столбец с нашей созданной функцией, которая «вытянет» данные из каждого файла. Для этого идем на вкладку Добавить столбец — Пользовательский столбец (Add Column — Add Custom Column) и в появившемся окне вводим нашу функцию getData, указав для ее в качестве аргумента полный путь к каждому файлу:

После нажатия на ОК созданный столбец должен добавиться к нашей таблице справа.
Теперь удалим все ненужные столбцы (как в Excel, с помощью правой кнопки мыши — Удалить), оставив только добавленный столбец и столбец с именем файла, т.к. это имя (а точнее — город) будет полезно иметь в итоговых данных для каждой строки.
А теперь «вау-момент» — щелкнем мышью по значку со своенным стрелками в правом верхнем углу добавленного столбца с нашей функцией:

… снимаем флажок Использовать исходное имя столбца как префикс (Use original column name as prefix)и жмем ОК. И наша функция подгрузит и обработает данные из каждого файла, следуя записанному алгоритму и собрав все в общую таблицу:

Для полной красоты можно еще убрать расширения .xlsx из первого столбца с именами файлов — стандартной заменой на «ничего» (правой кнопкой мыши по заголовку столбца — Заменить) и переименовать этот столбец в Город. А также подправить формат данных в столбце с датой.
Все! Жмем на Главной — Закрыть и загрузить (Home — Close & Load). Все собранные запросом данные по всем городам будут выгружены на текущий лист Excel в формате «умной таблицы»:

Созданное подключение и нашу функцию сборки не нужно никак отдельно сохранять — они сохраняются вместе с текущим файлом обычным образом.
В будущем, при любых изменениях в папке (добавлении-удалении городов) или в файлах (изменение количества строк) достаточно будет щелкнуть правой кнопкой мыши прямо по таблице или по запросу в правой панели и выбрать команду Обновить (Refresh) — Power Query «пересоберет» все данные заново за несколько секунд.
P.S.
Поправка. После январских обновлений 2017 года Power Query научился собирать Excel’евские книги сам, т.е. не нужно больше делать отдельную функцию — это происходит автоматически. Таким образом второй шаг из этой статьи уже не нужен и весь процесс становится заметно проще:
- Выбрать Создать запрос — Из файла — Из папки — Выбрать папку — ОК
- После появления списка файлов нажать Изменить
- В окне редактора запросов развернуть двойной стрелкой столбец Binary и выбрать имя листа, который нужно взять из каждого файла
И все! Песня!
Ссылки по теме
- Редизайн кросс-таблицы в плоскую, подходящую для построения сводных таблиц
- Построение анимированной пузырьковой диаграммы в Power View
- Макрос для сборки листов из разных файлов Excel в один
По своим наблюдениям, я замечал, что многие мои коллеги — при объединении 2-х и более таблиц в Excel используют методы ручного копирования данных, при соединении таблиц по одинаковым столбцам данных используют функцию ВПР. Это, конечно удобно, когда речь идет о небольших объемах данных. Но, что делать, если Вам необходимо обработать большие массивы данных из разных источников и из большого количества таблиц? В данном случае, Вам подойдет инструмент Power Query.
Как быстро можно объединить 2 и более таблицы в одну путем добавления данных:
1.В программе Excel импортируем данные из 2-х или более источников, например из книги *xlsx.
2. Создаем подключения данных.
3. Объединяем запросы через вкладку: Данные – создать запрос – объединить запросы – Добавить.
Таким образом данные из нескольких таблиц соединяются в одну таблицу буквально за несколько кликов мыши.
С использованием Power Query также можно объединять таблицы в одну через одинаковые столбцы данных, используя путь: Данные – создать запрос – объединить запросы – Объединить. Это аналог инструмента ВПР, но наиболее быстрый, удобный и эффективный.
Power Query умеет подключаться к разным источникам. Далее рассмотрим, как получить данные из книги Excel.
Лучше всего данные хранить в таблице Excel, это самый удобный и распространенный источник для Power Query. На ленте даже есть специальная кнопка.
Чтобы загрузить таблицу в редактор Power Query, достаточно выделить любую ее ячейку и нажать Данные → Получить и преобразовать данные → Из таблицы/диапазона.
Примечание. В вашей версии Excel расположение кнопок и их названия могут отличаться.
Если то же самое проделать с обычным диапазоном, то Excel вначале преобразует диапазон в таблицу Excel, а потом запустит Power Query.
Запросу присваивается имя таблицы Excel, которая является источником данных. Поэтому желательно сразу дать таблице говорящее название. Не обязательно, конечно, но желательно. В противном случае рекомендуется переименовать сам запрос, чтобы затем его можно было легко найти среди других запросов книги.
Данные находятся в Power Query. Новые значения, внесенные в исходную таблицу, автоматически попадут в запрос после его обновления. Далее в редакторе Power Query делают обработку данных и выгружают либо в виде таблицы Excel, либо оставляют в памяти Excel в виде подключения.
Именованный диапазон Excel
Источником для Power Query может быть не только таблица Excel. Например, вы получили красивый отформатированный отчет и не хотите вносить в него изменения. Тогда нужно использовать именованный диапазон. Самый простой способ создать именованный диапазон – это выделить область на листе и ввести название в поле Имя.
Либо выполнить команду Формулы → Определенные имена → Присвоить имя. В Excel будет создан новый объект, к которому можно обращаться, например, в формулах. Диапазон виден в Диспетчере имен.
Здесь перечислены все именованные диапазоны, формулы и таблицы. Среди них есть и только что созданный Отчет.
Теперь можно стать на любую ячейку внутри именованного диапазона (или выбрать его из выпадающего списка в поле Имя) и вызвать ту же команду: Данные → Получить и преобразовать данные → Из таблицы/диапазона. Произойдет загрузка данных в Power Query.
Такой способ позволяет «не портить» исходные данные. Но у него есть и очевидный недостаток: новые строки, которые выйдут за пределы именованного диапазона, не попадут в запрос.
Динамический именованный диапазон Excel
Решить данную проблему можно, создав динамический именованный диапазон. Это такой диапазон, который задается формулой и автоматически расширяется до последней заполненной ячейки.
Внести статичное имя в поле Имя на этот раз не получится. Поэтому заходим в Формулы → Определенные имена → Задать имя (или нажимаем Создать в Диспетчере имен), указываем название будущего динамического диапазона ДинамОтчет и внизу вместо ссылки записываем формулу:
=$A$2:ИНДЕКС($B:$B;ПОИСКПОЗ(99^99;$B:$B))
Ко всем ссылкам этой формулы Excel еще автоматически добавит название листа.
Смысл формулы следующий. Верхняя левая ячейка диапазона фиксируется ($A$2), а правая нижняя определяется формулой, которая возвращает адрес последней заполненной строки в столбце B.
Но не все так просто. Excel видит это имя лишь как формулу, а не диапазон. Как же его увидит Power Query? Делаем ход конем.
Создаем пустой запрос Power Query Данные → Получить и преобразовать данные → Получить данные → Из других источников → Пустой запрос. Открывается пустой запрос, где в строке формул нужно ввести:
= Excel.CurrentWorkbook()
После ввода формулы (нажатием Enter) Power Query обратится к текущей книге и выведет все объекты, среди которых есть и наш динамический диапазон ДинамОтчет.
Название запроса не подхватывается, поэтому придется изменить самостоятельно.
Чтобы извлечь содержимое объекта, в этой же строке правой кнопкой мыши кликаем по Table, далее выбираем Детализация.
Power Query разворачивает таблицу и даже делает некоторые шаги обработки: повышает заголовки и задает нужный формат для столбцов.
Теперь в запрос будут попадать новые строки, несмотря на то, что исходные данные не являются таблицей Excel.
Вот такие приемы импорта данных в Power Query из книги Excel. Самый распространенный из них – это импорт из таблицы Excel. Тем не менее, в случае необходимости можно прибегнуть к альтернативам, создав именованный или динамический именованный диапазон.
Консолидация данных из разных таблиц Excel
Одна из насущных задач, с которыми сталкиваются пользователи, – консолидация данных. Под консолидацией понимается объединение нескольких таблиц в одну. До появления Power Query это была довольно трудоемкая операция, особенно, если процесс требовал автоматизации. Хотя в эксель есть специальная команда Данные → Работа с данными → Консолидация, пользоваться ей не удобно. Мне, по крайней мере. Появление Power Query в корне изменило представление о том, как нужно объединять таблицы.
Рассмотрим пример. В некоторый файл каждый месяц вносится отчет о продажах в формате таблицы Excel. Каждая таблица при этом имеет соответствующее название: Январь_2018, Февраль_2018 и т.д. Необходимо объединить все таблицы книги в одну. Как бы скопировать и вставить одну под другой, создав при этом дополнительный столбец, указывающий, к какой таблице принадлежит конкретная строка. Задача не одноразовая, а с заделом на будущее, поэтому нужно предусмотреть появление в этом файле новых таблиц.
Процесс начинается с запуска пустого запроса: Данные → Получить и преобразовать данные → Создать запрос → Из других источников → Пустой запрос
Затем в строке формул вводим знакомую команду
= Excel.CurrentWorkbook()
Power Query показывает все таблицы в текущей книге.
Их нужно развернуть кнопкой с двумя стрелками в названии поля Content (на скриншоте ниже выделено красным кружком).
Если есть лишние столбцы, то их можно не выводить, сняв соответствующую галку. Также лучше убрать галку напротив опции Использовать исходное имя столбца как префикс. Нажимаем Ok.
Все таблицы находятся на одном листе, а рядом колонка с названием источника, откуда взята каждая строка.
Данные загружены. Можно приступать к их обработке. Ограничимся преобразованием названий таблиц в настоящую дату, чтобы затем использовать для сведения данных по месяцам.
Визуально мы наблюдаем и месяц, и год. Но Power Query такое название воспринимает, как текст. Поэтому делаем следующее.
Удалим нижнее подчеркивание. Правой кнопкой мыши по названию столбца Name → Замена значений.
В следующем окне настроек указываем, что меняем _ на пусто, то есть в нижнем поле ничего не указываем.
Подчеркивание удаляется из названия.
Поиск и замена здесь работает так же, как и в обычном Excel.
Далее запускаем команду Преобразование → Столбец «Дата и время» → Дата → Выполнить анализ.
Power Query распознает дату и меняет формат колонки. Мы также переименовываем столбец на Период.
Полученную таблицу можно использовать для анализа данных. Выгрузим ее на лист Excel.
Главная → Закрыть и загрузить.
Но что-то пошло не так. Во-первых, внизу таблицы пустая строка; во-вторых, при выгрузке произошла одна ошибка. Обновим запрос (справа от названия запроса значок обновления).
Что-то еще больше пошло не так. Даты исчезли, снизу таблицы добавились новые строки, а количество ошибок уже 19. Спокойствие, только спокойствие! Дело вот в чем.
Помните, на первом шаге мы получили все таблицы из файла? Так ведь и выгруженная таблица – это тоже таблица! Получается, Power Query взял 3 исходных таблицы, обработал, выгрузил на лист Excel и на следующем круге видит уже 4 таблицы!
При повторном обновлении запрос захватывает их все, а т.к. таблица выхода имеет другую структуру, то возникают ошибки.
Короче, из запроса нужно исключить таблицу, которая получается на выходе (Запрос1). Есть разные подходы, самый простой – это добавить шаг фильтрации. Выделяем в правой панели первый шаг Источник, открываем фильтр в колонке с названиями, снимаем галку с таблицы Запрос1 → Ok.
Снова выгружаем таблицу в Excel и на этот раз все в порядке.
Сделаем с помощью сводной таблицы маленький отчет по месяцам.
Прошло время, и в файл добавили новую таблицу с продажами за апрель.
Требуется обновить сводный отчет. Представьте на минуту, как это происходит в обычном Эксель: таблица копируется в самый низ общего источника, продлевается колонка с датой, изменяется диапазон для сводной таблицы, обновляется весь отчет.
А вот, как это выглядит при использовании Power Query.
Достаточно два раза нажать кнопку Обновить все (первый раз – для обновления запроса, второй – для сводной таблицы).
На добавление в отчет новых данных вместе с их обработкой потребовалось несколько секунд.
Вот за это мы так любим Power Query.
↓ Скачать файл с примером ↓
Поделиться в социальных сетях:
Файлы к уроку:
- Для спонсоров Boosty
- Для спонсоров VK
Ссылки:
- Страница курса
- Плейлист YouTube
- Плейлист ВК
Описание
В этом уроке вы научитесь объединять таблицы в Power Query по горизонтали.
В данном примере мы разберем объединение таблиц в Power Query. Это аналог операции LEFT JOIN из SQL. Для пользователей Excel данная операция тоже покажется знакомой. Больше всего она похожа на использование функции ВПР. Разница в том, что при использовании ВПР мы присоединяем данные только из одного столбца другой таблицы. Если же мы выполняем операцию объединения таблиц в Power Query, то объединяем таблицы полностью.
ВПР мы используем, когда хотим добавить значения из одной таблицы в другую. Как правило, мы добавляем данные из таблицы-справочника в таблицу-факт.
В таблице факта, например, может находиться детальная информация по продажам, а в таблице справочнике может находиться подробная информация о точке продаж: адрес, директор, тип точки и т. д.
Решение
В данном примере у нас есть 1 файла-источника. В первом находится детальная информация о продажах, а во втором справочная информация по торговым точкам. Нам нужно получить одну большую таблицу, т. е. к информации по продажам приклеить информацию по торговым точкам.
Чтобы объединить 2 таблицы сделаем следующее:
- Подключимся к обеим таблицам
- На вкладке Главная выберем команду Объединения
- Укажем общий столбец
При объединении важно обратить внимание на то, чтобы общий столбец был с одним типом данных.
Примененные функции
- Csv.Document
- Table.PromoteHeaders
- Table.SelectColumns
- Table.TransformColumnTypes
- Excel.Workbook
- Table.NestedJoin
- JoinKind.LeftOuter
- Table.ExpandTableColumn
Код
Код для подключения к первой таблице:
let
source = Csv.Document(
File.Contents(Путь & "И_ТЭКО.csv"),
[Delimiter = ";", Columns = 16, Encoding = 65001, QuoteStyle = QuoteStyle.None]
),
promote_headers = Table.PromoteHeaders(source, [PromoteAllScalars = true]),
rows_select = Table.SelectColumns(
promote_headers,
{
"Время",
"Id инициатора",
"Сумма в валюте получения",
"Валюта получения",
"Сумма в валюте внесения с комиссией",
"Валюта внесения",
"RUB (инициатор)"
}
),
types = Table.TransformColumnTypes(
rows_select,
{
{"Время", type datetime},
{"Сумма в валюте получения", type number},
{"Сумма в валюте внесения с комиссией", type number},
{"RUB (инициатор)", type number}
}
)
in
types
Код для подключения ко второй таблице:
let
source = Excel.Workbook(File.Contents(Путь & "И_СпрТочки.xlsx"), null, true),
get_table = source{[Item = "Таблица1", Kind = "Table"]}[Data],
types = Table.TransformColumnTypes(
get_table,
{
{"ID POS", Int64.Type},
{"Канал продаж", type text},
{"ТМ", type text},
{"Краткий адрес", type text},
{"ID 2", type text}
}
)
in
types
Код для объединения этих двух таблиц по горизонтали:
let
source = Table.NestedJoin(
table_1,
{"Id инициатора"},
table_2,
{"ID 2"},
"И_Точки",
JoinKind.LeftOuter
),
col_expand = Table.ExpandTableColumn(
source,
"И_Точки",
{"ID POS", "Канал продаж", "ТМ", "Краткий адрес"},
{"ID POS", "Канал продаж", "ТМ", "Краткий адрес"}
)
in
col_expand
Этот урок входит в Базовый курс Power Query
| Номер урока | Урок | Описание |
|---|---|---|
| 1 | Зачем нужен Power Query. Обзор возможностей | Этот урок сам по себе является мини-курсом. Здесь вы узнаете для каких видов операций с данными создан Power Query. |
| 2 | Подключение Excel | Подключаемся к файлам Excel. Импортируем данные из таблиц, именных диапазонов, динамических именных диапазонов. |
| 3 | Подключение CSV/TXT, таблиц, диапазонов | Подключаемся к к файлам CSV/TXT, Excel. |
| 4 | Объединить таблицы по вертикали | Учимся объединять две таблицы по вертикали — combine. |
| 5 | Объединить по вертикали все таблицы одной книги друг за другом | Как объединить по вертикали все таблицы одной книги, находящиеся на разных листах Excel. |
| 6 | Объединить по вертикали все файлы в папке | Объединяем по вертикали таблицы, которые находятся в разных файлах в одной папке. |
| 7 | Объединение таблиц по горизонтали | Учимся объединять таблицы по горизонтали — JOIN, merge. |
| 8 | Объединить таблицы с агрегированием | Объединить таблицы по горизонтали и сразу выполнить группировку с агрегированием — JOIN + GROUP BY. |
| 9 | Анпивот (Unpivot) | Изучаем операцию Анпивот — из сводной таблицы делаем таблицу с данными. |
| 10 | Многоуровневый анпивот (Анпивот с подкатегориями) | Более сложный вариант Анпивота — в строках находится несколько измерений. |
| 11 | Скученные данные | Данные собраны в одном столбце, нужно правильно его разбить на несколько. |
| 12 | Скученные данные 2 | Разбираем еще один пример скученных данных. |
| 13 | Ссылка на другую строку | Как сослаться на другую строку. |
| 14 | Ссылка на другую строку 2 | Как сослаться на другую строку, используя объединение по горизонтали. |
| 15 | Виды объединения таблиц по горизонтали | Изучаем виды объединения таблиц по горизонтали — LEFT JOIN, FULL JOIN, INNER JOIN, CROSS JOIN. |
| 16 | Виды объединения таблиц по горизонтали 2 | Изучаем анти-соединение и соединение таблицы с ней же самой — ANTI JOIN, SELF JOIN. |
| 17 | Группировка | Изучаем операцию группировки с агрегированием — GROUP BY. |
| 18 | Консолидация множества таблиц пользовательской функцией | Объединяем по вертикали множество таблиц с предварительной обработкой при помощи пользовательской функции. |
| 19 | Деление на справочник и факт | Разделим один датасет на два датасета: справочник и факт. |
| 20 | Создание параметра | Мы можем ввести значение в какую-то ячейку Excel, а потом передать это значение в формулу Power Query. |
| 21 | Таблица параметров | Создадим целую таблицу параметров и будем их использовать в запросах Power Query. |
| 22 | Объединение таблиц по вертикали, когда не совпадают заголовки столбцов | Как объединить две таблицы по вертикали, если названия столбцов не совпадают. |
| 23 | Поиск ключевых слов | Научимся искать ключевые слова в текстовом поле. |
| 24 | Поиск ключевых слов 2 | Будем искать ключевые поля в текстовом поле и присваивать этому значению какую-то категорию. |
Как объединить две или более таблиц в одну на основе ключевых столбцов?
Предположим, у вас есть три таблицы в книге, теперь вы хотите объединить эти таблицы в одну таблицу на основе соответствующих ключевых столбцов, чтобы получить результат, как показано на скриншоте ниже. Это может быть сложной задачей для большинства из нас, но, пожалуйста, не волнуйтесь, в этой статье я расскажу о некоторых методах решения этой проблемы.
![]() |
![]() |
![]() |
![]() |
![]() |
|
||||
![]() |
Объединение двух или более таблиц в одну на основе ключевых столбцов с помощью функции Power Query (Excel 2016 и более поздние версии)
Объединяйте две или более таблиц в одну на основе ключевых столбцов с удивительной функцией
Объединение двух или более таблиц в одну на основе ключевых столбцов с помощью функции Power Query (Excel 2016 и более поздние версии)
Для использования Power Query функция для объединения нескольких таблиц в одну на основе соответствующих ключевых столбцов, выполните следующие действия шаг за шагом:
1. Если диапазоны данных не относятся к табличному формату, сначала вы должны преобразовать их в таблицы, выберите диапазон, а затем нажмите Вставить > Настольные, В Создать таблицу диалоговое окно, нажмите OK кнопку см. скриншоты:
2. После создания таблиц для каждого из диапазонов данных выберите первую таблицу и щелкните Данные > Из таблицы / диапазона, см. снимок экрана:
3, Затем в Table1-редактор Power Query окна, нажмите Главная > Закрыть и загрузить > Закрыть и загрузить в, см. снимок экрана:
4. В выскочившем Импортировать данные, наведите на Только создать соединение , а затем нажмите OK кнопку, см. снимок экрана:
5. Затем создается первая таблица соединений в Запросы и связи Теперь повторите шаги 2–4, описанные выше, для создания таблиц соединений для двух других таблиц, которые вы хотите объединить. Когда закончите, вы получите скриншот, показанный ниже:
6. После создания соединений для таблиц вы должны объединить первые две таблицы в одну, нажмите Данные > Получить данные > Объединить запросы > идти, см. снимок экрана:
7. В идти диалоговом окне выполните следующие действия:
- (1.) Выберите первую таблицу из первого раскрывающегося списка;
- (2.) Выберите вторую таблицу, которую вы хотите объединить, из второго раскрывающегося списка;
- (3.) На панели предварительного просмотра щелкните соответствующий столбец из двух таблиц отдельно, чтобы выбрать их, и выбранные столбцы станут зелеными.
- (4.) В Присоединяйтесь к добру раскрывающийся список, выберите Left Outer (все с первого, соответствие со второго) опцию.
8, Затем нажмите OK кнопку в Редактор запросов Merge1-Power окна, нажмите 
9. А затем в развернутом поле:
- (1.) Оставить значение по умолчанию Расширьте выбран вариант;
- (2.) В Выбрать все столбцы поле со списком, отметьте имя столбца, который вы хотите объединить с первой таблицей;
- (3.) Снимите флажок Использовать исходное имя столбца в качестве префикса опцию.
10, Затем нажмите OK Кнопка, теперь вы можете видеть, что данные столбца во второй таблице были добавлены в первую таблицу, см. снимок экрана:
11. На этом этапе первая таблица и вторая таблица были успешно объединены ключевым столбцом, теперь вам нужно импортировать эту объединенную таблицу в новую таблицу подключения слияния, нажмите Главная > Закрыть и загрузить > Закрыть и загрузить в, см. снимок экрана:
12. В выскочившем Импортировать данные диалоговое окно, выберите Только создать соединение и нажмите OK кнопку, см. снимок экрана:
13. Здесь вы можете увидеть, что создается соединение с именем Слияние1 в Запросы и связи панель, см. снимок экрана:
14. После объединения первых двух таблиц теперь вам нужно объединить новые Слияние1 таблица с третьей таблицей, нажмите Данные > Получить данные > Объединить запросы > идтиИ в идти диалоговом окне выполните следующие операции:
- (1.) Выберите таблицу Merge1 из первого раскрывающегося списка;
- (2.) Выберите третью таблицу, которую вы хотите объединить, из второго раскрывающегося списка;
- (3.) На панели предварительного просмотра щелкните соответствующий столбец из двух таблиц отдельно, чтобы выбрать их, и выбранные столбцы станут зелеными;
- (4.) В Присоединяйтесь к добру раскрывающийся список, выберите Left Outer (все с первого, соответствие со второго) опцию.
15. А затем нажмите OK, В Редактор запросов Merge2-Power окна, нажмите 
16, Затем нажмите OK Кнопка, вы получите объединенную таблицу с тремя таблицами вместе, и теперь вы должны импортировать эту объединенную таблицу на новый лист таблицы, нажмите Главная > Закрыть и загрузить > Закрыть и загрузить в, см. снимок экрана:
17. В Импортировать данные диалоговое окно, выберите Настольные и Новый рабочий лист варианты, см. снимок экрана:
18. Наконец, новая таблица с данными из трех таблиц на основе соответствующих ключевых столбцов была создана на новом листе, как показано ниже:
Tips:
1. Если ваши исходные данные изменяются, вам нужно, чтобы объединенная таблица была также изменена, щелкните одну ячейку в объединенной таблице, а затем нажмите запрос > обновление чтобы получить обновленные данные. Смотрите скриншот:
2. С помощью этой функции вы также можете объединить гораздо больше таблиц, повторив вышеуказанные шаги.
Объединяйте две или более таблиц в одну на основе ключевых столбцов с удивительной функцией
В этом разделе я покажу полезную функцию — Слияние таблиц of Kutools for Excel, с помощью этой функции вы можете быстро объединить две или более таблиц в одну на основе ключевых столбцов.
Например, у меня есть две таблицы, которые нужно объединить, как показано на скриншоте ниже:
![]() |
![]() |
![]() |
![]() |
![]() |
Советы:Чтобы применить это Слияние таблиц функция, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Нажмите Кутулс Плюс > Слияние таблиц, см. снимок экрана:
2. На первом этапе Слияние таблиц мастера, выберите основную таблицу и таблицу поиска отдельно, (Внимание: данные столбца в поисковой таблице будут добавлены в основную таблицу), см. снимок экрана:
3. На шаге 2 из Слияние таблиц мастера, проверьте имя ключевого столбца, на основе которого вы хотите объединить таблицы, см. снимок экрана:
4. Нажмите Download кнопку на шаге 3 Слияние таблиц мастер, пожалуйста, нажмите Download кнопку напрямую, см. снимок экрана:
5. Затем, на шаге 4 мастера, проверьте имя столбца из таблицы поиска, которую вы хотите добавить в основную таблицу, см. Снимок экрана:
6. Продолжайте нажимать Download на последнем шаге мастера в Добавить поле со списком опций, отметьте Добавить несовпадающие строки в конец основной таблицы вариант, в то же время вы также можете выбрать операции для повторяющихся строк по мере необходимости. Смотрите скриншот:
7, Затем нажмите Завершить Кнопка, соответствующий столбец данных в таблице поиска будет добавлен в основную таблицу, как показано ниже:
![]() |
![]() |
![]() |
![]() |
![]() |
Tips:
1. С помощью этой функции вы можете обновлять данные в основной таблице другой таблицей по мере необходимости.
2. Чтобы объединить больше таблиц, вам просто нужно выбрать результат новых объединенных данных в качестве основной таблицы, а затем повторить вышеуказанные шаги.
Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!
Больше относительных статей:
- Объединить / объединить несколько листов в один лист в Google Sheet
- Как объединить или объединить несколько листов в один лист в Google Sheet? Здесь я расскажу о простой формуле решения этой задачи.
- Слияние и объединение строк без потери данных в Excel
- Excel сохраняет данные только в самой верхней левой ячейке, если вы примените команду «Объединить и центрировать» (вкладка «Главная»> «Объединить и центрировать» на панели «Выравнивание») для объединения строк данных в Excel. Пользователи должны использовать другой метод для объединения нескольких строк данных в одну строку без удаления данных. В этом руководстве вы узнаете, как объединить строки данных в одну.
- Объединить две таблицы, сопоставив столбец в Excel
- Предположим, у вас есть две таблицы на двух разных листах, одна — основная таблица, а другая — новая таблица данных. Теперь вы хотите объединить эти две таблицы с помощью соответствующего столбца и обновить данные, как показано на скриншоте ниже, как вы можете быстро решить эту проблему в Excel? В этой статье я расскажу о приемах быстрого объединения двух таблиц по столбцу.
- Объедините повторяющиеся строки и просуммируйте значения в Excel
- В Excel , вы всегда можете столкнуться с этой проблемой, если у вас есть диапазон данных, содержащий несколько повторяющихся записей, и теперь вы хотите объединить повторяющиеся данные и суммировать соответствующие значения в другом столбце, как показано на следующих снимках экрана. Как бы вы могли решить эту проблему?
- Объедините несколько книг в одну основную книгу в Excel
- Вы когда-нибудь застревали, когда вам нужно было объединить несколько книг в основную книгу в Excel? Самое ужасное, что книги, которые нужно объединить, содержат несколько листов. И как объединить только указанные листы нескольких книг в одну книгу? В этом руководстве показано несколько полезных методов, которые помогут вам поэтапно решить проблему.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя…
Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Это продолжение перевода книги Кен Пульс и Мигель Эскобар. Язык М для Power Query. Главы не являются независимыми, поэтому рекомендую читать последовательно.
Предыдущая глава Содержание Следующая глава
Перед профессионалами Excel часто встают задачи объединения данных из нескольких однотипных таблиц.[1] Power Query может делать это автоматически.
В папке примеров есть три CSV-файла: Jan 2008.csv, Feb 2008.csv и Mar 2008.csv. Начните с импорта первого файла:
- Создайте новую книгу Excel
- Создайте запрос Данные –> Из текстового/CSV-файла
- Выберите файл Jancsv
Рис. 3.1. Импортированный CSV-файл Jan 2008.csv содержит одну ошибку
Скачать заметку в формате Word или pdf, примеры в формате архива
Power Query импортирует файл и автоматически выполнит следующие действия:
- Продвинет первую строку в заголовки.
- Задаст типы данных.
Поскольку исходный файл Jan 2008.csv содержит данные в стандарте США, следует удалить шаг Измененный тип, и повторно назначить типы данных, используя для столбцов TranDate и Sum of Amount локальные установки США (а не РФ, действующие по умолчанию; подробнее см. предыдущую главу). Переименуйте столбцы TranDate –> Date и Sum of Amount –> Amount. Нажмите кнопку Закрыть и загрузить. Данные будут импортированы на лист Excel в виде, как на рис. 1.
Данные всё еще содержат одну ошибку – общие итоги. Вернитесь в редактор Power Query. Выделите столбец Date, кликните Удалить строки –> Удалить ошибки. Нажмите Закрыть и загрузить. Строка с итогами будет удалена.
Повторите операции для импорта Feb 2008.csv и Mar 2008.csv. Когда вы закончите, у вас будет три таблицы в книге Excel, каждая на своем листе. Чтобы объединить таблицы создайте новый запрос. Пройдите по меню Получить данные –> Объединить запросы –> Добавить:
Рис. 3.2. Меню объединения запросов
Откроется диалоговое окно Добавление (рис. 3.3). Доступ к окну Добавление можно получить и из редактора Power Query. Для этого в редакторе перейдите на вкладку Главная и пройдите по меню Добавить в запросы –> Добавить запросы в новый. (рис. 3.4).
Рис. 3.3. Окно Добавление
Рис. 3.4. Доступ к окну Добавление из редактора Power Query
Диалоговое окно Добавление объединяет запросы Power Query, а не таблицы Excel. Упорядочьте запросы в правом окне, чтобы данные располагались последовательно. Нажмите Ok. Power Query создаст новый запрос Append1, который включает один шаг:
Рис. 3.5. Новый объединенный запрос Append1
У вас может возникнуть соблазн прокрутить запрос вниз, чтобы увидеть, все ли ваши записи вошли в него. К сожалению, это займет много времени, так как бегунок работает не так как вы привыкли в Excel. При перемещении вниз новые строки будут подгружаться довольно медленно. Причина в том, что Power Query может использоваться для обработки больших наборов данных. Представьте, что вы подключаетесь к набору данных, из 5 миллионов строк, но хотите вытащить записи только для отдела №150. Power Query осуществляет как бы «предварительный просмотр», который должен дать достаточно информации для определения ключевой структуры данных. Вы выполните преобразования в данных предварительного просмотра и создаёте шаблон. Во время загрузки всех строк Power Query обрабатывает этот шаблон, извлекая только необходимые записи. Это намного эффективнее, чем загрузка всех данных в книгу и последующая обработка каждой строки и столбца.
Но если вы не видить все данные, как вы проверите, что объединенный запрос корректен? Переименуйте запрос Append1 –> Transactions. Кликните Закрыть и загрузить.
Рис. 3.6. Новый запрос суммирует все строки трех запросов
Вы также можете создать сводную таблицу, и убедиться, что Excel корректно объединил запросы:
Рис. 3.7. Сводная таблица на основе данных из запроса Transactions
Объединение запросов с разными заголовками
Ниже показана ситуация, когда пользователь забыл переименовать столбец TranDate в запросе Mar 2008. При объединении запросов Jan 2008 и Mar 2008 получится:
Рис. 3.8. Столбец TranDate, полный нулевых значений в январе, и столбец Date, полный нулевых значений в марте
Чтобы исправить это, откройте запрос Mar 2008, переименуйте столбец TranDate –> Date. Сохраните запрос Mar 2008. Откройте запрос Transactions. Как только вы откроете запрос, вы увидите, что он уже исправлен – столбец TranDate отсутствует. Чтобы поправить таблицу Transactions на листе Excel, просто обновите ее.
[1] На самом деле, Power Query поддерживает два типа объединений:
В английском варианте, это Merge Queries и Append Queries. Первая опция позволяет объединять таблицы, исключая строки-дубли и проводя иные интеллектуальные операции с данными. Вторая опция просто добавляет каждый последующий набор в конец существующего. Пиктограммы довольно неплохо иллюстрируют это. Настоящая заметка посвящена второй опции.
Самый удобный инструмент для объединения таблиц – надстройка Power Query. Сегодня разберем 6 базовых типов объединения таблиц в Power Query. Пробежимся по особенностям соединений, найдем плюсы и минусы разных способов и выберем оптимальные.
Power Query предлагает на выбор шесть различных способов объединения таблиц:
- Внешнее соединение слева (все из первой таблицы, совпадающие из второй)
- Внешнее соединение справа (все из второй таблицы, совпадающие из первой)
- Полное внешнее (все строки из обеих таблиц)
- Внутреннее (только совпадающие строки)
- Анти-соединение слева (только строки в первой таблице)
- Анти-соединение справа (только строки во второй таблице)
Для разных целей вам понадобятся разные виды соединений. Несмотря на то, что способы 1 и 2, а также 5 и 6 — зеркальны, мы разберём каждый из них.
Внешнее соединение слева (Left Outer Join)
Из правой таблицы «перетаскиваем» данные в левую (в Excel это делают обычно с помощью ВПР). К данным из первой таблицы добавляются все значения из второй таблицы, соответствующие столбцу поиска. Если во второй таблице нет искомых значений, вы получите значение null (null – это значит пусто).
Пример: объединим продажи товаров с ценами.
Шаг 1. Добавим таблицы в Power Query.
Выбираем: вкладка Данные → Получить данные → Из других источников → Из таблицы / диапазона. Для новых версий Excel: вкладка Данные → Из таблицы / диапазона.
Шаг 2. Создадим подключения
После загрузки вернемся обратно в Excel из Power Query командой «Закрыть и загрузить — Закрыть и загрузить в…». В появившемся затем окне выбираем «Только создать подключение».
Повторяем то же самое со второй таблицей с ценами. Теперь в Power Query появились таблицы, которые можно объединять.
Шаг 3. Объединим таблицы
Создадим третий запрос, который будет объединять и сравнивать данные из предыдущих двух запросов.
Для этого выберем в Excel на вкладке Данные — Получить данные — Объединить запросы — Объединить или нажмем кнопку Объединить на вкладке Power Query.
В окне объединения выберем в выпадающих списках наши таблицы, выделим в них столбцы с названиями товаров и в нижней части зададим тип соединения «Внешнее соединение слева»:
Далее появится таблица из трех столбцов. Третий столбец содержит таблицы цен по каждому товару — эти таблицы нужно развернуть с помощью двойной стрелки в шапке:
Оставляем галочки для нужных столбцов и нажимаем ОК. Можно не использовать имя столбца как префикс — это только загружает заголовки.
В итоге получим слияние данных из обеих таблиц. На некоторые товары цены еще не установлены, поэтому в столбце «цена» для этих товаров будет значение null:
Осталось выгрузить получившийся отчет на лист Excel с помощью кнопки «Закрыть и загрузить» на вкладке Главная. Объединение выполнено успешно!
Этот тип Join довольно удобен если у вас есть таблица статистики, в которую нужно подтянуть дополнительные столбцы.
Внешнее соединение справа (Right Outer Join)
Вторая таблица используется как источник данных и управляет содержимым первой таблицы. Из второй таблицы будут добавлены те значения, которых нет в первой. Из первой таблицы исчезнут все ненайденные во второй таблице данные.
«Внешнее соединение справа» работает так же, как и «Внешнее соединение слева» – отличается только порядок расположения таблиц. В связи с этим оно редко используется на практике.
Пример: объединим таблицу ставок по оплатам и таблицу с переработками.
Объединим таблицы, чтобы рассчитать будущие выплаты сотрудникам. Общий столбец для поиска — «сотрудники».
В результате объединения у нас «исчезли» данные по сотрудникам, у которых нет переработок. В объединенную таблицу попали только сотрудники из второй таблицы.
Полное внешнее соединение (Full Outer Join)
В этом случае будут объединены все строки из первой и второй таблиц. Это самый безопасный способ соединения двух таблиц — вы не теряете данные. Такой способ часто помогает сравнить данные двух таблиц и найти расхождения.
Пример: объединим таблицы по объему производства и количеству брака.
В данном примере попробуем объединить таблицы по нескольким столбцам. Для создания общей таблицы используется «Полное внешнее соединение». Для объединения используем общие столбцы «Дата» и «Подразделение» — выбираем их в нужном порядке в каждой таблице, зажимая клавишу ctrl:
В результате получится отчет, который нужно немного доработать:
Приводим к нужному виду нашу объединенную таблицу:
Во всех ячейках, где даты и подразделения таблиц не совпали, проставлено null. Сразу видим расхождения между таблицами, что очень удобно для сравнений.
Внутреннее соединение (Inner Join)
При таком типе соединения в общей таблице остаются только совпадающие строки из обеих таблиц. Если вас интересуют только пересечения таблиц, Inner Join — самый подходящий способ.
Пример: получить список только тех сотрудников, которые выполнили успешно оба теста.
Для решения этой задачи также объединим таблицы по нескольким столбцам. Для создания общей таблицы используется тип соединения «Внутреннее (только совпадающие строки)».
Получим список сотрудников, участвующих в обоих тестах:
После фильтрации и удаления лишних столбцов приводим объединенную таблицу к нужному виду:
Анти-соединение слева (Left Anti Join)
При Left Anti Join подтянутся все данные из левой таблицы, которых нет в правой таблице. Можно сказать, анти-ВПР.
Если надо вычесть одну таблицу из другой — вам подойдёт именно Left Anti Join.
Пример: в первой таблице – список клиентов и количество звонков, во второй – данные о сделках. Нужно найти клиентов, которым звонили, но они ничего не купили.
Исключаем из первой таблицы всех клиентов второй таблицы. Для создания общей таблицы используется «Анти-соединение слева»:
После удаления лишнего столбца получаем готовую таблицу клиентов, которые ничего не купили:
Анти-соединение справа (Right Anti Join)
С помощью Right Anti Join из второй таблицы будут исключены все строки, найденные в первой таблице. По сути это зеркальное отражение Left Anti Join, поэтому используется редко.
Пример: в первой таблице — участники акций, во второй – клиенты и суммы оплат. Следует найти клиентов, которые совершили сделки, но не участвовали в акциях.
Нужно исключить из второй таблицы всех найденных клиентов в первой таблице. Для создания общей таблицы используется «Анти-соединение справа».
Power Query на этапе слияния всегда делает нам подсказку: «Выделенный фрагмент исключает строки из второй таблицы (4 из 6)». В результате получаем запрос такого вида:
Разворачиваем содержимое вложенных таблиц с помощью двойной стрелки в шапке и удаляем два первых столбца. Получаем готовый отчет о клиентах, не участвующих в акции:
Заключение
Мы рассмотрели 6 базовых соединений таблиц в Power Query. 4 из них довольно часто применяются на практике, а 2 — являются зеркальными и используются редко.
Для подтягивания дополнительных данных к таблицам статистики рекомендуем использовать Left Join. Если вы хотите сравнить несколько таблиц между собой, вам пригодится Full Outer Join. Когда нужно найти пересечения таблиц — пользуйтесь Inner Join. Ну а для вычитания одной таблицы из другой всегда можно задействовать Left Anti Join.
«Right Join» и «Right Anti Join» на практике обычно не используются, так как являются зеркальным отражением «Left Join» и «Left Anti Join». Но на всякий случай мы включили их в описание, чтобы вы увидели как их использовать.
Microsoft Power Query — полезный инструмент для работы с данными внутри Microsoft Excel. Он поставляется с множеством функций, которые помогают управлять простыми, но мощными наборами данных.
Power Query наиболее полезен при работе с несколькими наборами данных. Он действует как мост между наборами данных и Microsoft Excel.
Чтобы продемонстрировать это, статья поможет вам выполнить типичную задачу, в которой лучше всего проявляется Power Query: объединить два разных набора данных в один.
- Что такое Microsoft Power Query?
- Набор данных
- Загрузите данные в редактор Power Query
- Используйте редактор Power Query
- Добавить второй источник данных
- Присоединяйтесь к паспорту данных
- Загрузить данные в рабочий лист
Что такое Microsoft Power Query?
Microsoft Power Query — это инструмент, включенный в Microsoft Excel для Windows. Он включен только в версии Excel 2016 или новее, поэтому проверьте эти версии, чтобы начать использовать Power Query. Новые пользователи должны убедиться, что они понимают основы Excel, прежде чем начать использовать Power Query.
Power Query позволяет загружать данные из нескольких разных источников, редактировать эти данные, а затем импортировать данные в электронную таблицу Excel. Узнайте больше о том, почему вам следует начать использовать Microsoft Power Query.
Один из типов источников, из которых вы можете получить данные, — это другие листы Excel. Чтобы получить данные, проиллюстрированные для Power Query в этой статье, в примере будут использоваться две отдельные электронные таблицы Excel, содержащие одинаковые наборы данных, а затем их объединить в одну.
Набор данных
Выберите 2 книги Excel, соответственно в примере «Cars.xlsx» и «Trucks.xlsx». Содержание этих таблиц очень простое. Каждый рабочий лист содержит таблицу с описанием определенных носителей, классифицированных по столбцам: «Марка», «Модель», «Цвет» и «Год».
В этом примере также создается пустая книга под названием «Vehicles.xlsx» для выполнения своей работы.
Для простоты в статье используются два набора данных с одинаковой информацией заголовка. Цель здесь — создать новую доску с информацией об автомобилях и грузовиках.
Эти книги были сохранены на компьютере. Теперь займемся Power Query!
Загрузите данные в редактор Power Query
Для начала все, что вам нужно сделать, это открыть книгу, содержащую созданные данные. В данном случае книга — «Транспортные средства.xlsx».
Power Query очень прост в использовании. Вам не нужно открывать книгу, содержащую данные, чтобы извлечь то, что вам нужно. В «Vehicles.xlsx» перейдите на вкладку «Данные», содержащую параметры для книги.
Вы увидите опцию «Получить данные» на панелях инструментов. Этот параметр является входом в Power Query и позволяет выбрать источник данных.
Вы хотите работать с книгой Excel, поэтому выберите вариант «Из файла», а затем «Из книги».
Редактор откроет проводник, и вы сможете перейти к книге в любом месте ПК. Сначала выберите файл Cars.xlsx.
Когда вы закончите выбор файла, загрузится меню Power Query Navigator, чтобы показать вам предварительный просмотр выбранного рабочего листа. Обратите внимание на файл Cars.xlsx, а также на рабочий лист, отображаемый в навигаторе. Нажмите на лист, и рабочий лист загрузится в то же меню, что и на рабочем листе! Щелкните «Преобразовать данные», чтобы открыть данные в редакторе.
Используйте редактор Power Query
В редакторе Power Query имеется множество опций, не беспокойтесь о них прямо сейчас, так как в этой статье вы познакомитесь только с основами. На первый взгляд данные загружены правильно! Похоже на таблицу Excel. Данные организованы в строки и столбцы с заголовками, названными вверху.
Справа от вас находится меню под названием «Параметры запроса», которое содержит окно «Примененные шаги». Шаги здесь — это изменения, внесенные в таблицу. Обратите внимание на этот раздел для дальнейшего использования.
В крайнем левом углу щелкните значок «Запросы», чтобы развернуть меню и отобразить имя таблицы, над которой вы работаете. Power Query может принимать несколько таблиц одновременно и отображать их все на этой панели инструментов.
Чтобы объединить две таблицы, необходимо загрузить обе таблицы в Power Query. Один у вас уже есть, поэтому загрузите другой.
Добавить второй источник данных
Внутри редактора в правом верхнем углу находится кнопка «Новый источник». Эта кнопка позволяет выбрать дополнительный источник данных и добавить его в редактор Power Query.
Выберите «Файл», а затем «Excel», чтобы открыть проводник. Перейдите к Trucks.xlsx, чтобы выбрать файл для импорта.
Как и в первом запросе, появится навигатор, позволяющий выбрать таблицу из электронной таблицы. Выберите электронную таблицу и нажмите ОК. Теперь вы увидите доски для легковых и грузовых автомобилей на панели инструментов «Запросы». Щелчок по одной из двух таблиц отобразит данные в этой электронной таблице.
Присоединяйтесь к листу данных
После того, как все шаги подготовлены, объединить таблицы данных на самом деле довольно просто. Щелкните панель «Машины» и на панели инструментов выберите «Добавить запросы» в разделе «Объединить».
Появится окно «Добавить», в котором будет указана таблица, которую вы хотите объединить с выбранной таблицей. Помните, что вы находитесь на доске «Машины» и хотите связать с ней доску «Грузовики». Щелкните таблицу «Грузовики» внутри «Добавляемой таблицы», чтобы объединить ее, и нажмите «ОК».
Вот результат:
Обратите внимание, что все данные об автомобилях и грузовиках будут помещены в одну таблицу. Наборы данных были объединены! Также обратите внимание, что Power Query создал новый «шаг» в вашем списке под названием «Добавленный запрос».
Загрузить данные в рабочий лист
Последнее, что нужно сделать, — это взять данные, хранящиеся в редакторе Power Query, и загрузить их в свою электронную таблицу.
В верхнем левом углу нажмите «Закрыть и загрузить», чтобы поместить вновь созданную таблицу в «Транспортные средства» в формате таблицы. При нажатии происходит следующее:
- Редактор сохранит шаги запроса и выхода.
- Книга появится с данными, загруженными в виде таблицы Excel.
- Excel также откроет меню «Запросы к книге» в правой части листа.
Вы готовы работать с новыми таблицами, не открывая их!
Теперь вы узнали, как добавлять данные с помощью Power Query. У вас есть новый мощный инструмент для упрощения данных. Теперь, когда данные загружены в Excel для использования, вы можете работать с ними как с любой таблицей. Вы можете создавать диаграммы из таблиц Excel или массово вставлять изображения в ячейки Excel.
Надеюсь, у вас все получится.




























































































































