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

Сборка данных со всех листов книги в одну таблицу

Постановка задачи

Допустим, что у нас есть книга с большим количеством листов, где на каждом листе находится таблица с данными по сделкам в этом городе:

Исходный файл

Давайте будем исходить из следующих соображений:

  • Структура и столбцов на всех листах одинаковая.
  • Количество строк на всех листах разное.
  • Листы могут в будущем добавляться или удаляться.

Наша задача — собрать все данные со всех листов в одну таблицу, чтобы потом с ней работать (фильтровать, сортировать, построить сводную и т.д.) Сделать это можно разными способами, но самыми удобными будут, пожалуй, Power Query и макросы.

Способ 1. Сборка данных с листов с помощью Power Query

Если вы ещё не сталкивались в своей работе с Power Query, то очень советую копнуть в этом направлении. Использование этой бесплатной и уже встроенной по умолчанию в Excel надстройки, способно полностью перевернуть весь ваш процесс сбора и анализа данных, упростив всё в разы. С задачей сбора данных с листов Power Query справляется весьма успешно.

Шаг 1. Подключаемся к файлу

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

Если у вас Excel 2010-2013 и вы установили Power Query как отдельную надстройку, то откройте вкладку Power Query, если у вас Excel 2016 или новее, то вкладку Данные (Data). Нажмите кнопку Получить данные / Создать запрос — Из файла — Книга Excel (Get Data / New Query — From file — From Excel) и укажите наш файл с исходными листами:

Указываем файл

В появившемся окне Навигатора (Navigator) выберите слева любой лист и нажмите в правом нижнем углу кнопку Преобразовать данные (Transform Data) или Изменить (Edit):

Выбираем любой лист

Должно появиться окно редактора запросов Power Query, где отобразятся данные с выбранного листа. Поскольку нам нужен, на самом деле, не один лист, а все, то удалим в правой панели все шаги, кроме первого шага Источник (Source) используя крестик слева от названия шага:

Удаляем лишние шаги

То, что останется после удаления шагов — это список всех объектов, которые Power Query «видит» во внешних файлах, а это:

  • листы (Sheet)
  • «умные таблицы» (Table)
  • именованные диапазоны (Defined Name)
  • области печати (Print Area), которые, по сути, являются одним из видов именованного диапазона

Шаг 2. Отбираем нужные листы

В исходном файле может быть много всего лишнего, что нам не требуется собирать: случайные ненужные листы, служебные именованные диапазоны, побочные умные таблицы и т.п. Очень важно отфильтровать этот «информационный мусор», т.к. в будущем из-за любого подобного объекта наш запорс будет, скорее всего, вылетать с ошибкой или некорректно собирать данные. Для решения этой задачи можно использовать несколько подходов.

Во-первых, легко можно отфильтровать нужные объекты по типу по столбцу Kind. Например, если вам нужны только листы:

Фильтруем листы

Во-вторых, если нам нужны только видимые листы, то дополнительно можно отфильтровать ещё по столбцу Hidden.

В-третьих, если вы точно знаете размер таблиц, которые вам нужны, то можно легко добавить к нашему списку вычисляемый столбец с формулой, выводящей количество столбцов или строк и использовать потом эти числа для отбора. Для этого выберем на вкладке Добавление столбца — Настраиваемый столбец (Add Column — Custom Column) и введём в открывшееся окно следующую формулу (с учётом регистра):

Подсчет числа столбцов

Для подсчёта количества строк можно использовать аналогичную функцию Table.RowCount. Получившийся столбец затем можно использовать для фильтрации «мусорных» таблиц.

В-четвёртых, можно извлечь с каждого листа содержимое любой ячейки (например, А1) и использовать его для отбора. Например, если там нет слова «Товар«, то это не наш лист. Для извлечения нужно будет также добавить вычисляемый столбец с такой конструкцией:

=[Data][Column1]{0}

Здесь:

  • [Data] — имя столбца, где в каждой ячейке лежат таблицы с содержимым каждого листа (убийственная формулировка для рядового пользователя Excel, да, я знаю)
  • [Column1] — имя столбца на листе, из которого мы хотим извлечь данные
  • {0} — номер строки (считая с нуля), откуда мы хотим взять данные

Извлекаем содержимое А1 с каждого листа

После фильтрации «мусора» все добавленные вспомогательные столбцы можно, конечно же, спокойно удалить, оставив только колонки Name и Data.

Шаг 3. Разворачиваем таблицы

Теперь развернём содержимое таблиц в одно целое, используя кнопку с двойными стрелками в заголовке столбца Data, отключив флажок Использовать исходное имя столбца как префикс (Use original column name as prefix):

Разворачиваем вложенные таблицы

После нажатия на ОК Power Query соберёт для нас все данные в одну мегатаблицу со всех отобранных листов нашего файла:

Собранные данные

Останется лишь «навести блеск», а именно:

  1. Поднять первую строку в шапку таблицы кнопкой Использовать первую строку в качестве заголовков (Use first row as headers) на вкладке Главная (Home).
  2. Переименовать первый столбец в Город двойным щелчком на заголовку.
  3. Удалить повторяющиеся шапки таблиц, попавшие в одну кучу вместе с данными, используя фильтр по столбцу Товар.

Всё. Осталось только дать нашему запросу подходящее имя (например, Сборка) в панели справа и выгрузить затем собранные данные обратно в Excel кнопкой Закрыть и загрузить на вкладке Главная (Home — Close & Load):

Собранные данные

В будущем, при любых изменениях в исходном файле достаточно будет лишь обновить наш запрос, щелкнув по собранной таблице правой кнопкой мыши и выбрав команду Обновить (Refresh) или такой же кнопкой на вкладке Данные (Data) или сочетанием клавиш Ctrl+Alt+F5.

Плюсы такого подхода:

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

Минусы этого способа:

  • Собираются только значения, т.е. формулы с исходных листов не сохраняются.
  • Названия столбцов должны на всех листах совпадать с точностью до регистра.
  • Нельзя выбрать какой именно диапазон берётся с каждого листа — это определяется автоматически (берётся всё, что есть).
  • Для обновления нужен Excel 2016 или новее или установленная надстройка Power Query.

Способ 2. Сборка данных с листов макросом на VBA

Похожего результата можно добиться и с помощью более «классического» подохода — макросом на VBA. Для этого на вкладке Разработчик (Developer) нажмите кнпоку Visual Basic или воспользуйтесь сочетанием клавиш Alt+F11. В открывшемся окне добавьте новый модуль через меню Insert — Module и скопируйте туда текст вот такого макроса:

Sub CollectDataFromAllSheets()
    Dim ws As Worksheet
    
    Set wbCurrent = ActiveWorkbook
    Workbooks.Add
    Set wbReport = ActiveWorkbook
    
    'копируем на итоговый лист шапку таблицы из первого листа
    wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
    
    'проходим в цикле по всем листам исходного файла
    For Each ws In wbCurrent.Worksheets
    
        'определяем номер последней строки на текущем листе и на листе сборки
        n = wbReport.Worksheets(1).Range("A1").CurrentRegion.Rows.Count
        
        'задаем исходный диапазон, который надо скопировать с каждого листа - любой вариант на выбор:
        Set rngData = ws.Range("A1:D5")            'фиксированный диапазон или
        Set rngData = ws.UsedRange                 'всё, что есть на листе или
        Set rngData = ws.Range("F5").CurrentRegion    'область, начиная от ячейки F5 или
        Set rngData = ws.Range("A2", ws.Range("A2").SpecialCells(xlCellTypeLastCell))    'от А2 и до конца листа
        
        'копируем исходный диапазон и вставляем в итоговую книгу со следующей строки
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
        
    Next ws
End Sub

Запустить созданный макрос можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или с помощью сочетания клавиш Alt+F8. Макрос автоматически создаст новую книгу и скопирует туда нужные вам данные.

Плюсы такого подхода:

  • Формулы с исходных листов сохраняются в сборке.
  • Имена столбцов не играют роли.
  • Макрос будет работать в любой версии Excel.
  • Можно выбирать, что именно брать с каждого листа (конкретный фиксированный диапазон или весь лист).

Минусы этого способа:

  • Последовательность столбцов на всех листах должна быть одинаковой, т.к. происходит, по сути, тупое копирование таблиц друг-под-друга.
  • Защита от макросов должна быть отключена.
  • Быстрого обновления, как это было с Power Query, здесь, к сожалению, не будет. При изменении исходных данных придётся запустить макрос повторно.

Способ 3. Готовый макрос из надстройки PLEX

Если лень возиться с макросами или Power Query, то можно пойти по пути наименьшего сопротивления — использовать готовый макрос (кнопка Собрать) из моей надстройки PLEX для Excel. Это, может, и не спортивно, но зато эффективно:

Сборка данных с листов через PLEX

В общем, выбирайте любой удобный вам вариант и действуйте. Выбор — это всегда хорошо.

Ссылки по теме

  • Что такое Power Query и с чем его едят.
  • Как создавать свои макросы, использовать чужие и запускать их в своих файлах.
  • Сборка данных из нескольких файлов с помощью Power Query.

Это продолжение перевода книги Кен Пульс и Мигель Эскобар. Язык М для Power Query. Главы не являются независимыми, поэтому рекомендую читать последовательно.

Предыдущая глава    Содержание    Следующая глава

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

Ris. 5.1. Dostupnye Tablitsy v okne redaktora Power Query

Рис. 5.1. Доступные Таблицы в окне редактора Power Query

Скачать заметку в формате Word или pdf, примеры в формате архива

Объединение таблиц и диапазонов в текущем файле

Откройте файл с примерами Consolidate TablesStart.xlsx. В файле три листа с информацией о подарочных сертификатах, выданных spa-салоном. Сотрудник, создавший файл, не указывал в Таблицах дату выпуска сертификатов, а размещал данные на отдельных листах по месяцам: Jan 2008, Feb2008,  Mar 2008. Для анализа данные желательно объединить, и Power Query справится с этим быстрее, чем ручная обработка.

Создайте пустой запрос: пройдите по меню Данные –> Получить данные –> Из других источников –> Пустой запрос. В окне редактора Power Query в строке формул ведите (рис. 5.1):

=Excel.CurrentWorkbook()

Нажмите Enter. Вы увидите доступные объекты текущей книги: Таблицы, именованные диапазоны, подключения к внешним источникам данных. К сожалению, нельзя получить перечень листов файла.

Как вы узнали из главы 4, можно щелкнуть пробел рядом с зелеными словами в столбце Content для предварительного просмотра данных Table (рис. 5.2).

Ris. 5.2. Predvaritelnyj prosmotr soderzhimogo Table

Рис. 5.2. Предварительный просмотр содержимого Table

В главе 4 вы также узнали, что кликнув на двуглавую стрелку в верхней части столбца Content, вы развернете содержимое Таблиц, сохраняя сведения из столбца Name. Итак, кликните двуглавую стрелку, в открывшемся окне настроек снимите флажок Использовать исходное имя столбца как префикс, нажмите Ok:

Ris. 5.3. Import i obedinenie dannyh s dobavleniem stolbtsa s imenem tablitsy

Рис. 5.3. Импорт и объединение данных с добавлением столбца с именем таблицы; чтобы увеличить изображение кликните на нем правой кнопкой мыши и выберите Открыть картинку в новой вкладке

Преобразуйте имена таблиц в даты (подробнее см. главу 4):

  • Щелкните правой кнопкой мыши столбец Name –> Замена значений
  • Заменить символ _ (подчеркивание) на ˽ 1,˽ (пробел, единица, запятая, пробел)
  • Щелкните правой кнопкой мыши столбец Name –> Тип изменения –> Дата
  • Перейдите на вкладку Преобразование –> Дата –> Месяц –> Конец месяца
  • Щелкните правой кнопкой мыши столбец Name –> Переименовать –> Конец месяца
  • Измените имя запроса на Подарочные сертификаты

Ris. 5.4. Finalnyj vid zaprosa

Рис. 5.4. Финальный вид запроса

Перейдите на вкладку Главная и кликните Закрыть и загрузить. Объединенные данные будут размещены на новом листе Excel. К сожалению, запрос содержит кучу ошибок:

Ris. 5.5. Dannye obedineny na liste Excel pravda vkralis oshibki

Рис. 5.5. Данные объединены на листе Excel; правда, вкрались ошибки

Не страшно. Наведите курсор мыши на запрос Подарочные сертификаты, и во всплывающем окне кликните Изменить. Снова откроется редактор Power Query. В области ПРИМЕНЕННЫЕ ШАГИ выберите первый шаг – Источник (цифра 1 на рис. 5.6). Вы заметите, что теперь у вас четыре таблицы в списке. Добавилась таблица Подарочные сертификаты, которая была создана в результате запроса. Чтобы избавиться от дублирования, необходимо добавить фильтрацию таблиц, участвующих в запросе. Кликните стрелочку возле названия столбца Name (2), выберите опцию Текстовые фильтры –> Не содержит. Подтвердите, что вы хотите вставить шаг. В окне Фильтрация строк выберите Не содержитПодарочные (3):

Ris. 5.6. Filtratsiya tablits po imeni

Рис. 5.6. Фильтрация таблиц по имени

Нажмите Ok. В редакторе Power Query перейдите на вкладку Главная. Кликните кнопку Закрыть и загрузить. Теперь запрос содержит 62 строки; ошибок нет.

Существует и вторая возможность избавиться от ошибок – убрать дубли. Откройте редактор Power Query. Перейдите на шаг Измененный тип. Выберите столбец Name и на вкладке Главная кликните Удалить строки –> Удалить ошибки. Подтвердите, что вы хотите вставить новый шаг в середину запроса. На вкладке Главная кликните Закрыть и загрузить.

Объединение диапазонов и листов

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

Перейдите на лист Jan 2008. На вкладке Разметка страницы кликните Печатать заголовки. На закладке Лист введите A:D в поле Выводить на печать диапазон, кликните Ok.

Ris. 5.7. Vybor oblasti pechati

Рис. 5.7. Выбор области печати

Повторите процедуру для листов Feb 2008 и Mar 2008. Создайте пустой запрос, и в строке формул введите: =Excel.CurrentWorkbook(). Нажмите Enter. Вы увидите список трех таблиц и трех именованных диапазонов:

Ris. 5.8. Obekty knigi Excel dostupnye dlya importa v Power Query

Рис. 5.8. Объекты книги Excel, доступные для импорта в Power Query

Чтобы не дублировать данные, отфильтруйте столбец Name: Заканчивается напечати. Нажмите кнопку Развернуть в верхней части столбца Content. Оставьте выбранными все столбцы, снимите флажок Использовать исходное имя столбца как префикс. Обратите внимание на отличия от предыдущего случая. Показаны все строки в выбранных столбцах диапазона печати:

Ris. 5.9. Neobrabotannyj rabochij list

Рис. 5.9. Необработанный рабочий лист

Выполним дополнительную очистку данных:

  • Главная –> Удалить строки –> Удалить верхние строки –> 2
  • Главная –> Использовать первую строку в качестве заголовков
  • Столбец Cert Number –> Фильтр –> снимите флажок c null
  • Щелкните правой кнопкой мыши столбец Cert Number –> Тип изменения –> Целое число
  • Выберите столбец Cert Number
  • Закладка Главная –> Удалить строки –> Удалить ошибки
  • Выберите столбец Cert Number. Удерживайте нажатой клавишу Shift выберите столбец Service
  • Щелкните правой кнопкой мыши один из выбранных заголовков столбцов –> Удалить другие столбцы
  • Измените имя запроса на Все листы
  • Главная –> Закрыть и загрузить

При работе с областями печати рекомендуется ограничивать область печати необходимыми строками и столбцами. В примере выше мы выбрали целиком столбцы, что привело к импорту в Power Query около 3 млн. строк с трех листов. Наверное, вы заметили, как медленно выполнялись некоторые команды!

Агрегирование данных из других книг

Вам нужно создать список книг Excel и извлечь их содержимое, аналогично тому, что вы сделали в главе 4, когда вы извлекли содержимое файлов CSV.

Создайте новую книгу Excel. Создать новый запрос: Данные –> Получить данные –> Из файла –> Из папки. Выберите папку Source Files. В списке есть как файлы Excel, так и иные файлы:

Ris. 5.10. Fajl dostupnye v papke Source Files

Рис. 5.10. Файлы, доступные в папке Source Files

Нажмите Преобразовать данные, и отфильтруйте файлы Excel:

  • Щелкните правой кнопкой мыши столбец Extension –> Преобразование –> нижний регистр
  • Фильтр столбца Extension –> Текстовые фильтры –> Начинается с… –> .xlsx
  • Выберите столбцы Content имя Name –> щелкните правой кнопкой мыши –> Удалить другие столбцы

У вас может возникнуть соблазн нажать кнопку Объединить файлы

Ris. 5.11. Obedinit fajl

Рис. 5.11. Объединить файл

… и, к сожалению, Power Query позволит вам это сделать. Однако, вы обнаружите, что Power Query сделает что-то весьма странное. Чтобы откатить импорт, перейдите в область ПРИМЕНЕННЫЕ ШАГИ и удалите все шаги после шага Другие удаленные столбы.

Раз вы не можете объединить и импортировать файлы простым методом, пойдем трудным способом:

  • В редакторе Power Query перейдите на вкладку Добавление столбца –> Настраиваемый столбец
  • Введите формулу =Excel.Workbook([Content])
  • Нажмите кнопку Ok
  • Щелкните правой кнопкой мыши столбец Content –> Удалить

Новый пользовательский столбец содержит все объекты, к которым можно подключиться, включая все Таблицы Excel, именованные диапазоны и даже листы:

Ris. 5.12. Obekty dostupnye dlya importa

Рис. 5.12. Объекты, доступные для импорта

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

Ris. 5.13. Obekty dostupnye dlya importa

Рис. 5.13. Объекты, доступные для импорта

Столбец Kind показывает, что у вас есть Листы, определенное имя и Таблицы. Если не отфильтровать этот перечень объектов, у вас будет много дублей:

  • Отфильтруйте столбец Kind, оставив только Sheet
  • Отфильтруйте столбец Name, удалив файл Named Range.xlsx
  • Выберите столбцы Name, Name.1 и Data –> щелкните правой кнопкой мыши на заголовке одного из этих столбцов –> Удалить другие столбцы
  • Кликните кнопку Развернуть у заголовка столбца Data (снимите настройки префикса)

Запрос теперь выглядит следующим образом:

Ris. 5.14. Zapros s shestyu importirovannymi obektami Sheet

Рис. 5.14. Запрос с шестью импортированными объектами Sheet

Преобразуем данные:

  • Главная –> Использовать первую строку в качестве заголовков
  • Щелкните правой кнопкой мыши на заголовке столбца Workbookxlsx –> Переименовать –> Source File
  • Щелкните правой кнопкой мыши заголовке столбца Jan 2008 column –> Переименовать –> Month
  • Выберите столбец Amount –> Главная –> Удалить строки –> Удалить ошибки
  • Измените имя запроса FromExcelFiles
  • Главная –> Закрыть и загрузить

Данные загружаются в Таблицу на листе Excel. На их основе можно создать сводную таблицу, чтобы увидеть, что вы смогли извлечь из внешних файлов Excel:

Ris. 5.15. Svodnaya pozvolyaet proverit chto zhe vy importirovali

Рис. 5.15. Сводная позволяет проверить, что же вы импортировали

Видно, что вы успешно извлекли данные из двух Excel-файлов, каждый из которых содержит по три листа. В общей сложности извлекли более 12 000 записей.

Подытожим

Функция Excel.CurrentWorkbook() считывает все объекты текущего файла. Поскольку она является первой в применяемых шагах запроса, вы получаете эффект рекурсии. При обновлении Power Query добавит объекты, созданные в процессе выполнения запроса, к тем, что существовали первоначально. Стратегии защиты заключается в фильтрации объектов по имени или фильтрации ошибок в ключевых столбцах. Тестируйте метод фильтрации с помощью нескольких команд Обновить все.

Функция Excel.Workbook([Content]) не вызывает проблем с рекурсией, поскольку исходные данные считываются из внешних книг, а результаты запроса сохраняются в текущей книге. Но функция Excel.Workbook([Content]) создает иную проблему: она извлекает листы в дополнение к диапазонам и таблицам. Это может приводить к дублированию данных. Обратите особое внимание на фильтрацию столбца Kind (вид), чтобы избежать этой проблемы. Даже если при построении запроса в книге имеется только один вид данных, полезно применить фильтрацию, чтобы защитить решение от будущих изменений.

Merging data into a single sheet is a crucial and significant skill to know. For example, you have the monthly sales of a company in the 12 worksheets of excel. Now you want to calculate the net revenue made in the entire year. So, we need to merge all the data in the 12 excel sheets, this task could be easily achieved by power query in excel. Let’s learn how to merge data from all sheets in a selected file using a power query. 

Power Query 

Power Query is one of the very powerful tools in excel. Some important points of power query are: 

  • Power query can save more than 50% of your time.
  • Power query comes with triple power. It has functionalities of Advance Excel, SQL, and VBA.
  • VLOOKUP function can be used in just a few mouse clicks.
  • If you are using an excel version greater than 2016 then you will get a built-in power query. For versions older than this, the power query needs to be added separately.

Power query is already built-in in excel. Go to Data Tab, Get & Transform Data, and Queries & Connections section is the power query for users having the 2019 excel version. 

Power-query-section

Merging data from all sheets in a file

The best way to understand merging sheets in a file is by an example, given a data set of three worksheets sheet1, sheet2, and sheet3. Each sheet contains a table name mid_sem_1, mid_sem_2 and end_sem respectively. The table in sheet1 has columns as Roll No. , Name, and Mid Sem 1 marks. The table in sheet2 has columns as Roll No., Mid Sem 2 marks. The table in sheet3 has columns as Name and End Sem marks. The name of this workbook is geeks_for_geeks.xlsx.

Creating-table1-mid_sem_1Table2-mid_sem_2Table3-end_sem

Following are the steps to merge all the sheets in the selected file: 

Step 1: Press Ctrl + N to create a new file. Go to the Data tab, and click on Get Data

Clicking-get-data

Step 2: Go to From File and click on From Workbook.

Going-to-from-workbook

Step 3: Open file geeks_for_geeks.xlsx. A navigator dialogue box appears.

File-containing-all-three-sheets

Step 4: Select the tables you want to transform and merge data from different excel sheets. 

Merging-all-three-tables

Step 5: A power query editor appears. Go to the mid_sem_1 table.

Opening-mid_sem_1

Step 6: In the home tab, click on Merge Queries. A dialogue-box name Merge appears. 

Clicking-merge-queries

Step 7: Select the table you want to merge with mid_sem_1. For example, mid_sem_2.

Merging

Step 8:  Select the column that is common in both tables. For example, Roll No. is the attribute that is common in both tables. Click Ok.

Selecting-the-common-column

Step 9: A new column in table mid_sem_1 is added. The name of the attribute is mid_sem_2.

New-column-added

Step 10: Click on the double-sided arrow and select the columns you want to add to this table. Uncheck the box Use the original column name as a prefix to have the original column names in your table. 

Unchecking-box

Step 11: The mid sem 2 marks get appended in your table name mid_sem_1

Mid_sem_2-marks-appended

Step 12: Repeat step 6. Go to the home tab and click on Merge Queries. A Merge dialogue box appears. Select the table name end_sem. Now, select the column which is common in the mid_sem_1 and end_sem table. Click Ok.

Merging

Step 13: A column name end_sem appears in mid_sem_1 table. Click on the double-sided arrow. Select the column you want to add to the merged table. For example, End sem marks. Uncheck the box Use the original column name as a prefix. Click Ok.

Unchecking-box

Step 14: A new column name End sem Marks is appended in the table name mid_sem_1

End-sem-marks

Step 15: Sort the Roll No. in ascending order. 

Sorting-roll-no.

Step 16: The table is ready. In the home tab, click on Close & Load.

Clicking-close-and-load

Step 17: The merged table is created in sheet name mid_sem_1. We can see that there is a total of 4 worksheets. The 3 worksheets are redundant. Delete all the worksheets except the sheet name mid_sem_1. Rename the sheet name from mid_sem_1 to final_result.

Worksheets-appears

Step 18: The final merged table appears. 

Final-merged-table

Файлы к уроку:

  • Для спонсоров Boosty
  • Для спонсоров VK

Ссылки:

  • Страница курса
  • Плейлист YouTube
  • Плейлист ВК

Описание

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

В этом уроке вы узнаете/повторите:

  • Функция Excel.CurrentWorkbook
  • Как объединить все таблицы из одного файла Excel друга за другом по вертикали
  • Разберем некоторые тонкости объединения/консолидации/комбинирования таблиц одной книги Excel друг за другом в Power Query

Решение

Решение можно разбить на несколько шагов:

  • Подключение к файлу Excel
  • В таблице с доступными источниками оставить только табличный столбец с нужными данными
  • Развернуть это табличный столбец

Примененные функции

  • Excel.CurrentWorkbook
  • Table.SelectRows
  • Table.SelectColumns
  • Table.ExpandTableColumn
  • Table.TransformColumnTypes

Код

let
   // Подключаемся к файлу Excel
   source = Excel.CurrentWorkbook(),

   // Выбираем только столбец, в котором находится таблица
   rows_select = Table.SelectRows(source, each ([Name] <> "Добавлено")),
   cols_select = Table.SelectColumns(rows_select, {"Content"}),

   // Разворачиваем табличный столбец и указываем типы данных
   table_expand = Table.ExpandTableColumn(
      cols_select,
      "Content",
      {
         "Дата",
         "Агент",
         "ФИО",
         "Город",
         "ТУ",
         "Категория льготы",
         "Контакты#(lf)льготника",
         "ГБУЗ"
      },
      {
         "Дата",
         "Агент",
         "ФИО",
         "Город",
         "ТУ",
         "Категория льготы",
         "Контакты#(lf)льготника",
         "ГБУЗ"
      }
   ),
   types = Table.TransformColumnTypes(
      table_expand,
      {
         {"Дата", type date},
         {"Агент", Int64.Type},
         {"ФИО", type text},
         {"Город", type text},
         {"ТУ", Int64.Type},
         {"Категория льготы", type text},
         {"Контакты#(lf)льготника", type text},
         {"ГБУЗ", type text}
      }
   )
in
   types

Этот урок входит в Базовый курс 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 Будем искать ключевые поля в текстовом поле и присваивать этому значению какую-то категорию.

Вы работали со сводными таблицами Excel? Если нет – нужно срочно начинать. Это супер-инструмент, который позволяет быстро и просто обрабатывать большие объемы данных. А если вы с ними все-таки работали, то я как экстрасенс-капитан-очевидность могу точно сказать, что вы сталкивались с ситуацией, когда нужно построить сводную таблицу на основе нескольких источников данных. Например, с помощью нескольких одинаковых таблиц Excel, копируя их одну под другой. Или дополняя свою таблицу новыми столбцами и аналитиками.

Добавление или объединение таблиц?

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

  1. По вертикали – добавление таблицы под таблицу. Полезно, когда таблицы с одинаковой шапкой находятся в разных файлах или на разных листах.
  2. По горизонтали – слияние таблиц, похожее на ВПР. А здесь есть еще варианты — не только аналогичные ВПР, но и ВПР-наоборот, и ВПР-неВПР… Целых шесть видов объединения таблиц.

Разберем, чем эти способы отличаются друг от друга.

Вариант 1. Добавление таблицы под таблицу

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

Как на основе таблиц с одинаковой шапкой построить единую базу? Добавив таблицы одну под другую

Раньше процедуру добавления строк из одной таблицы в другую можно было выполнить с помощью копирования. Отсюда много ручной работы при внесении новых данных (ну, или писали макросы). Однако с момента появления в Excel надстройки Power Query у нас появилась возможность добавлять таблицы одну под другую несколькими щелчками мыши. Как это сделать – смотрите в видео.

Вариант 2. Объединение таблиц

Объединение таблиц применяется, когда у вас есть две таблицы (шапки у них скорее всего разные), и одна таблица дополняет другую. Например, в отчете продажи показаны по городам, а у вас просят вывести информацию по областям. Тогда потребуется объединение по горизонтали:

Одна таблица дополняет другую с помощью объединения по общему столбцу

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

Типы объединения данных в Power Query

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

  • Внешнее соединение слева (все из первой таблицы, совпадающие из второй)
  • Внешнее соединение справа (все из второй таблицы, совпадающие из первой)
  • Полное внешнее (все строки из обеих таблиц)
  • Внутреннее (только совпадающие строки)
  • Анти-соединение слева (только строки в первой таблице)
  • Анти-соединение справа (только строки во второй таблице)

Left Outer Join

Inner Join

Right Outer Join

Внешнее соединение справа

Left Anti Join

Full Outer Join

Right Anti Join

Разберем в способы объединения данных на примерах.

Внешнее соединение слева

Left Outer Join

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

объединение в power query

Когда вы выбираете «Внешнее соединение слева», к данным из первой таблицы добавляются все значения из второй таблицы, соответствующие столбцу поиска. Если во второй таблице нет искомых значений, вы получите null или «пусто».

Пример: объединим план продаж в штуках с плановыми ценами.

Внешнее соединение слева

Добавьте таблицы в Power Query: вкладка Данные → Получить данные → Из других источников → Из таблицы / диапазона, или для новых версий Excel: вкладка Данные → Из таблицы / диапазона. Объедините запросы: вкладка Главная → Объединить запросы, выберите столбец слияния «Товар» и тип объединения «Внешнее соединение слева». На некоторые товары нет плановых цен, поэтому после объединения в столбце «цена» для этих товаров будет проставлен null.

Соединение Power Query

Хотя в диалоговом окне таблицы расположены одна под другой (просто так удобнее технически), связь все равно горизонтальная. В диалоговом окне указывается столбец, по которому выполняется объединение.

Внешнее соединение справа

Right Outer Join

Тип соединения «Внешнее соединение справа» используется, если в первую таблицу нужно не только добавить новые столбцы, но и отфильтровать её. Вторая таблица используется как источник данных и управляет содержимым первой таблицы.

power query объединение таблиц

Что происходит, когда вы выбираете «Внешнее соединение справа»: из первой таблицы исчезнут все не найденные во второй таблице данные. Из второй таблицы будут добавлены те значения, которых нет в первой. Если посмотреть на рисунок, видно, что Внешнее соединение справа работает так же, как и Внешнее соединение слева, отличается только порядок расположения таблиц.

Пример: в первой таблице — ожидаемые среднемесячные продажи на одного покупателя, во второй – количество потенциальных покупателей. Объединим таблицы, чтобы запланировать будущие продажи.

Внешнее соединение справа

Объединим таблицы, чтобы запланировать будущие продажи. Общий столбец для поиска — «Направление».

Соединение Power Query

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

Полное внешнее соединение

Full Outer Join

Этот тип соединения создает таблицу, в которой есть все строки и первой, и второй таблицы. С помощью общего столбца объединяются все строки таблиц.

power query полное объединение

Пример: в первой таблице приведен объем производства по дням, во второй – объем брака. Создадим общую таблицу.

Полное внешнее соединение

Для создания общей таблицы используется Полное внешнее соединение. Для объединения используем общий столбец «дата». В результате получится отчет с датами и цифрами из первой и второй таблицы. В ячейках, где данные за аналогичные периоды были только в первой или только во второй таблице, стоит null.

Полное внешнее соединение

Внутреннее соединение

Inner Join

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

power query объединение

Таблицы объединяются с помощью общего столбца. При этом из первой таблицы исчезнут все не найденные в «общем» столбце второй таблицы строки. Из второй таблицы – исчезнут не найденные в первой.

Пример: есть два списка покупателей, принявших участие в акциях А и Б – по одному для каждой из акций. С помощью Внутреннего соединения получим список покупателей, участвовавших и в той, и в другой акции.

Внутреннее соединение

Поиск выполняется по общему столбцу «Покупатель». Результат — список покупателей, участвовавших в обеих акциях.

Внутреннее соединение

Анти-соединение слева

Left Anti Join

Если вам требуется исключить из таблицы ненужные строки, можно воспользоваться объединением с Анти-соединением слева. С помощью этого способа из первой таблицы будут исключены все строки, найденные во второй.

power query объединение

Пример: в первой таблице – записи о сделанных покупателям коммерческих предложениях, во второй – данные о продажах. С помощью Анти-соединения слева найдем покупателей, которые получили предложение, но не сделали покупку.

Анти-соединение слева

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

Анти-соединение слева

Анти-соединение справа

Right Anti Join

Анти-соединение справа работает так же, как и Анти-соединение слева. Разница здесь только в порядке расположения таблиц.

power query объединение

Пример: в первой таблице – отчет о выполненных задачах, во второй – список поставленных задач. Объединив таблицы с помощью Анти-соединения справа, найдем невыполненные задачи.

Анти-соединение справа

В результате объединения получим список невыполненных задач.

Анти-соединение справа

Кроме объединения таблиц с помощью запросов Power Query, такие операции можно выполнять и с помощью DAX-формул, применяя их в различных сочетаниях: GENERATEALL, NATURALLEFTOUTERJOIN, NATURALINNERJOIN, CROSSJOIN, FILTER+CROSSJOIN, GENERATE, EXCEPT и др.

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Как объединить листы в excel 2007 в один лист
  • Как объединить линии в word
  • Как объединить кучу excel файлов в один
  • Как объединить круговые диаграммы в excel в одну
  • Как объединить колонки в word

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии