Объединение двух или нескольких таблиц
Excel для Microsoft 365 Excel 2021 Excel 2019 Excel 2016 Excel 2013 Еще…Меньше
Вы можете объединить строки из одной таблицы в другую, просто вклеив данные в первые пустые ячейки под целевой таблицей. Таблица увеличится в размере, чтобы включить в нее новые строки. Если строки в обеих таблицах совпадают, вы можете объединить столбцы одной таблицы с другой, вклеив их в первые пустые ячейки справа от таблицы. В этом случае таблица также увеличится вместить новые столбцы.
Слияние строк на самом деле очень просто, но слияние столбцов может быть непросто, если строки одной таблицы не соответствуют строкам в другой таблице. Некоторых проблем с выравниванием можно избежать, если воспользоваться функцией ВПР.
Объединение двух таблиц с помощью функции ВЛОП
В приведенного ниже примере вы увидите две таблицы с другими именами: «Синяя» и «Оранжевая». В таблице «Синяя» каждая строка представляет собой позицию заказа. Например, заказ № 20050 содержит две позиции, № 20051 — одну, № 20052 — три и т. д. Мы хотим объединить столбцы «Код продажи» и «Регион» с таблицей «Синяя» с учетом соответствия значений в столбце «Номер заказа» таблицы «Оранжевая».
Значения «ИД заказа» повторяются в таблице «Синяя», но значения «ИД заказа» в таблице «Оранжевая» уникальны. Если просто скопировать и ввести данные из таблицы «Оранжевая», значения «ИД продаж» и «Регион» для второй строки заказа 20050 будут отключены на одну строку, что изменит значения в новых столбцах таблицы «Синяя».
Вот данные для таблицы «Синяя», которую можно скопировать на пустой лист. После в таблицы нажмите CTRL+T, чтобы преобразовать ее в таблицу, а затем переименуйте таблицу Excel синюю.
Номер заказа |
Дата продажи |
Код продукта |
---|---|---|
20050 |
02. 02.2014 |
C6077B |
20050 |
02.02.2014 |
C9250LB |
20051 |
02.02.2014 |
M115A |
20052 |
03.02.2014 |
A760G |
20052 |
03. 02.2014 |
E3331 |
20052 |
03.02.2014 |
SP1447 |
20053 |
03.02.2014 |
L88M |
20054 |
04.02.2014 |
S1018MM |
20055 |
05. 02.2014 |
C6077B |
20056 |
06.02.2014 |
E3331 |
20056 |
06.02.2014 |
D534X |
Вот данные для таблицы «Оранжевая». Скопируйте его на тот же самый таблицу. После в таблицы нажмите CTRL+T, чтобы преобразовать ее в таблицу, а затем переименуйте таблицу в Оранжевая.
Номер заказа |
Код продажи |
Регион |
---|---|---|
20050 |
447 |
Запад |
20051 |
398 |
Юг |
20052 |
1006 |
Север |
20053 |
447 |
Запад |
20054 |
885 |
Восток |
20055 |
398 |
Юг |
20056 |
644 |
Восток |
20057 |
1270 |
Восток |
20058 |
885 |
Восток |
Нам необходимо обеспечить правильное выравнивание значений «ИД продаж» и «Регион» для каждого заказа с каждым уникальным элементом строки заказа. Для этого впустим заголовки таблицы «ИД продажи» и «Регион» в ячейки справа от таблицы «Синяя», а затем с помощью формулЫ ВЗ ПРОСМОТР выберем правильные значения из столбцов «ИД продажи» и «Регион» таблицы «Оранжевая».
Вот как это сделать.
-
Скопируйте заголовки «ИД продажи» и «Регион» в таблице «Оранжевая» (только эти две ячейки).
-
В ячейку справа от заголовка «ИД товара» таблицы «Синяя».
Теперь таблица «Синяя» содержит пять столбцов, включая новые — «Код продажи» и «Регион».
-
В таблице «Синяя», в первой ячейке столбца «Код продажи» начните вводить такую формулу:
=ВПР(
org/ListItem»>
-
Введите точку с запятой, число 2, еще раз точку с запятой, а потом 0, вот так: ;2;0
-
Нажмите клавишу ВВОД, и законченная формула примет такой вид:
Выражение Оранжевая[#Все] означает, что нужно просматривать все ячейки в таблице «Оранжевая». Число 2 означает, что нужно взять значение из второго столбца, а 0 — что возвращать значение следует только в случае точного совпадения.
Обратите внимание: Excel заполняет ячейки вниз по этому столбцу, используя формулу ВПР.
-
Вернитесь к шагу 3, но в этот раз начните вводить такую же формулу в первой ячейке столбца «Регион».
-
На шаге 6 вместо 2 введите число 3, и законченная формула примет такой вид:
Между этими двумя формулами есть только одно различие: первая получает значения из столбца 2 таблицы «Оранжевая», а вторая — из столбца 3.
Теперь все ячейки новых столбцов в таблице «Синяя» заполнены значениями. В них содержатся формулы ВПР, но отображаются значения. Возможно, вы захотите заменить формулы ВПР в этих ячейках фактическими значениями.
-
Выделите все ячейки значений в столбце «Код продажи» и нажмите клавиши CTRL+C, чтобы скопировать их.
-
На вкладке Главная щелкните стрелку под кнопкой Вставить.
-
В коллекции параметров вставки нажмите кнопку Значения.
org/ListItem»>
В таблице «Синяя» выберите первую ячейку столбца «Номер заказа» — 20050.
Частично заполненная формула выглядит так:
Выражение [@[Номер заказа]] означает, что нужно взять значение в этой же строке из столбца «Номер заказа».
Введите точку с запятой и выделите всю таблицу «Оранжевая» с помощью мыши. В формулу будет добавлен аргумент Оранжевая[#Все].
Выделите все ячейки значений в столбце «Регион», скопируйте их и повторите шаги 10 и 11.
Теперь формулы ВПР в двух столбцах заменены значениями.
Дополнительные сведения о таблицах и функции ВПР
-
Как добавить или удалить строку или столбец в таблице
-
Использование структурированных ссылок в формулах таблиц Excel
-
Использование функции ВПР (учебный курс)
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Создание связи между двумя таблицами в Excel
Вы применяли функцию ВПР, чтобы переместить данные столбца из одной таблицы в другой? Так как в Excel теперь есть встроенная модель данных, функция ВПР устарела. Вы можете создать связь между двумя таблицами на основе совпадающих данных в них. Затем можно создать листы Power View или сводные таблицы и другие отчеты с полями из каждой таблицы, даже если они получены из различных источников. Например, если у вас есть данные о продажах клиентам, вам может потребоваться импортировать и связать данные логики операций со временем, чтобы проанализировать тенденции продаж по годам и месяцам.
Все таблицы в книге указываются в списках полей сводной таблицы и Power View.
При импорте связанных таблиц из реляционной базы данных Excel часто может создавать эти связи в модели данных, формируемой в фоновом режиме. В других случаях необходимо создавать связи вручную.
-
Убедитесь, что книга содержит хотя бы две таблицы и в каждой из них есть столбец, который можно сопоставить со столбцом из другой таблицы.
-
Вы можете отформатировать данные как таблицу или импортировать внешние данные в виде таблицы на новом.
-
Присвойте каждой из таблиц понятное имя: На вкладке Работа с таблицами щелкните Конструктор > Имя таблицы и введите имя.
-
Убедитесь, что столбец в одной из таблиц имеет уникальные значения без дубликатов. Excel может создавать связи только в том случае, если один столбец содержит уникальные значения.
Например, чтобы связать продажи клиента с логикой операций со временем, обе таблицы должны включать дату в одинаковом формате (например, 01.01.2012) и по крайней мере в одной таблице (логика операций со временем) должны быть перечислены все даты только один раз в столбце.
-
Щелкните Данные> Отношения.
Если команда Отношения недоступна, значит книга содержит только одну таблицу.
-
В окне Управление связями нажмите кнопку Создать.
org/ListItem»>
-
Для элемента Столбец (чужой) выберите столбец, который содержит данные, относящиеся к элементу Связанный столбец (первичный ключ). Например, при наличии столбца даты в обеих таблицах необходимо выбрать этот столбец именно сейчас.
-
В поле Связанная таблица выберите таблицу, содержащую хотя бы один столбец данных, которые связаны с таблицей, выбранной в поле Таблица.
-
В поле Связанный столбец (первичный ключ) выберите столбец, содержащий уникальные значения, которые соответствуют значениям в столбце, выбранном в поле Столбец.
-
Нажмите кнопку ОК.
В окне Создание связи щелкните стрелку рядом с полем Таблица и выберите таблицу из раскрывающегося списка. В связи «один ко многим» эта таблица должна быть частью с несколькими элементами. В примере с клиентами и логикой операций со временем необходимо сначала выбрать таблицу продаж клиентов, потому что каждый день, скорее всего, происходит множество продаж.
Дополнительные сведения о связях между таблицами в Excel
-
Примечания о связях
-
Пример. Связывание данных логики операций со временем с данными по рейсам авиакомпании
-
«Могут потребоваться связи между таблицами»
-
Шаг 1. Определите, какие таблицы указать в связи
-
Шаг 2. Найдите столбцы, которые могут быть использованы для создания пути от одной таблицы к другой
-
Примечания о связях
-
Вы узнаете, существуют ли связи, при перетаскивании полей из разных таблиц в список полей сводной таблицы. Если вам не будет предложено создать связь, то в Excel уже есть сведения, необходимые для связи данных.
-
Создание связей аналогично использованию VLOOKUP: вам нужны столбцы, содержащие совпадающие данные, чтобы Excel могли ссылаться на строки в одной таблице с строками из другой таблицы. В примере со временем в таблице Customer должны быть значения дат, которые также существуют в таблице аналитики времени.
-
В модели данных связи таблиц могут быть типа «один к одному» (у каждого пассажира есть один посадочный талон) или «один ко многим» (в каждом рейсе много пассажиров), но не «многие ко многим». Связи «многие ко многим» приводят к ошибкам циклической зависимости, таким как «Обнаружена циклическая зависимость». Эта ошибка может произойти, если вы создаете прямое подключение между двумя таблицами со связью «многие ко многим» или непрямые подключения (цепочку связей таблиц, в которой каждая таблица связана со следующей отношением «один ко многим», но между первой и последней образуется отношение «многие ко многим»). Дополнительные сведения см. в статье Связи между таблицами в модели данных.
org/ListItem»>
-
Другие способы создания связей могут оказаться более понятными, особенно если неизвестно, какие столбцы использовать. Дополнительные сведения см. в статье Создание связи в представлении диаграммы в Power Pivot.
Типы данных в двух столбцах должны быть совместимы. Подробные сведения см. в статье Типы данных в моделях данных.
Пример. Связывание данных логики операций со временем с данными по рейсам авиакомпании
Вы можете узнать о связях обеих таблиц и логики операций со временем с помощью свободных данных на Microsoft Azure Marketplace. Некоторые из этих наборов данных очень велики, и для их загрузки за разумное время необходимо быстрое подключение к Интернету.
- org/ListItem»>
-
Нажмите Получение внешних данных > Из службы данных > Из Microsoft Azure Marketplace. В мастере импорта таблиц откроется домашняя страница Microsoft Azure Marketplace.
-
В разделе Price (Цена) нажмите Free (Бесплатно).
-
В разделе Category (Категория) нажмите Science & Statistics (Наука и статистика).
org/ListItem»>
-
Введите свои учетные данные Майкрософт и нажмите Sign in (Вход). Откроется окно предварительного просмотра данных.
-
Прокрутите вниз и нажмите Select Query (Запрос на выборку).
-
Нажмите кнопку Далее.
-
Чтобы импортировать данные, выберите BasicCalendarUS и нажмите Готово. При быстром подключении к Интернету импорт займет около минуты. После выполнения вы увидите отчет о состоянии перемещения 73 414 строк. Нажмите Закрыть.
-
Чтобы импортировать второй набор данных, нажмите Получение внешних данных > Из службы данных > Из Microsoft Azure Marketplace.
-
В разделе Type (Тип) нажмите Data Данные).
-
В разделе Price (Цена) нажмите Free (Бесплатно).
-
Найдите US Air Carrier Flight Delays и нажмите Select (Выбрать).
-
Прокрутите вниз и нажмите Select Query (Запрос на выборку).
-
Нажмите кнопку Далее.
-
Нажмите Готово для импорта данных. При быстром подключении к Интернету импорт займет около 15 минут. После выполнения вы увидите отчет о состоянии перемещения 2 427 284 строк. Нажмите Закрыть. Теперь у вас есть две таблицы в модели данных. Чтобы связать их, нужны совместимые столбцы в каждой таблице.
-
Убедитесь, что значения в столбце DateKey в таблице BasicCalendarUS указаны в формате 01. 01.2012 00:00:00. В таблице On_Time_Performance также есть столбец даты и времени FlightDate, значения которого указаны в том же формате: 01.01.2012 00:00:00. Два столбца содержат совпадающие данные одинакового типа и по крайней мере один из столбцов (DateKey) содержит только уникальные значения. В следующих действиях вы будете использовать эти столбцы, чтобы связать таблицы.
-
В окне Power Pivot нажмите Сводная таблица, чтобы создать сводную таблицу на новом или существующем листе.
-
В списке полей разверните таблицу On_Time_Performance и нажмите ArrDelayMinutes, чтобы добавить их в область значений. В сводной таблице вы увидите общее время задержанных рейсов в минутах.
org/ListItem»>
-
Обратите внимание, что теперь в сводной таблице перечислены месяцы, но количество минут одинаковое для каждого месяца. Нужны одинаковые значения, указывающие на связь.
-
В списке полей, в разделе «Могут потребоваться связи между таблицами» нажмите Создать.
-
В поле «Связанная таблица» выберите On_Time_Performance, а в поле «Связанный столбец (первичный ключ)» — FlightDate.
org/ListItem»>
-
Обратите внимание, что время задержки в настоящее время отличается для каждого месяца.
-
В таблице BasicCalendarUS перетащите YearKey в область строк над пунктом MonthInCalendar.
Запустите надстройку Power Pivot в Microsoft Excel и откройте окно Power Pivot.
Найдите DateStream и нажмите кнопку Subscribe (Подписаться).
Разверните таблицу BasicCalendarUS и нажмите MonthInCalendar, чтобы добавить его в область строк.
В поле «Таблица» выберитеBasicCalendarUS, а в поле «Столбец (чужой)» — DateKey. Нажмите ОК для создания связи.
Теперь вы можете разделить задержки прибытия по годам и месяцам, а также другим значениям в календаре.
Советы: По умолчанию месяцы перечислены в алфавитном порядке. С помощью надстройки Power Pivot вы можете изменить порядок сортировки так, чтобы они отображались в хронологическом порядке.
-
Таблица BasicCalendarUS должна быть открыта в окне Power Pivot.
-
В главной таблице нажмите Сортировка по столбцу.
-
В поле «Сортировать» выберите MonthInCalendar.
-
В поле «По» выберите MonthOfYear.
Сводная таблица теперь сортирует каждую комбинацию «месяц и год» (октябрь 2011, ноябрь 2011) по номеру месяца в году (10, 11). Изменить порядок сортировки несложно, потому что канал DateStream предоставляет все необходимые столбцы для работы этого сценария. Если вы используете другую таблицу логики операций со временем, ваши действия будут другими.
«Могут потребоваться связи между таблицами»
По мере добавления полей в сводную таблицу вы получите уведомление о необходимости связи между таблицами, чтобы разобраться с полями, выбранными в сводной таблице.
Хотя Excel может подсказать вам, когда необходима связь, он не может подсказать, какие таблицы и столбцы использовать, а также возможна ли связь между таблицами. Чтобы получить ответы на свои вопросы, попробуйте сделать следующее.
Шаг 1. Определите, какие таблицы указать в связи
Если ваша модель содержит всего лишь несколько таблиц, понятно, какие из них нужно использовать. Но для больших моделей вам может понадобиться помощь. Один из способов заключается в том, чтобы использовать представление диаграммы в надстройке Power Pivot. Представление диаграммы обеспечивает визуализацию всех таблиц в модели данных. С помощью него вы можете быстро определить, какие таблицы отделены от остальной части модели.
Примечание: Можно создавать неоднозначные связи, которые являются недопустимыми при использовании в сводной таблице или отчете Power View. Пусть все ваши таблицы связаны каким-то образом с другими таблицами в модели, но при попытке объединения полей из разных таблиц вы получите сообщение «Могут потребоваться связи между таблицами». Наиболее вероятной причиной является то, что вы столкнулись со связью «многие ко многим». Если вы будете следовать цепочке связей между таблицами, которые подключаются к необходимым для вас таблицам, то вы, вероятно, обнаружите наличие двух или более связей «один ко многим» между таблицами. Не существует простого обходного пути, который бы работал в любой ситуации, но вы можете попробоватьсоздать вычисляемые столбцы, чтобы консолидировать столбцы, которые вы хотите использовать в одной таблице.
Шаг 2. Найдите столбцы, которые могут быть использованы для создания пути от одной таблице к другой
После того как вы определили, какая таблица не связана с остальной частью модели, пересмотрите столбцы в ней, чтобы определить содержит ли другой столбец в другом месте модели соответствующие значения.
Предположим, у вас есть модель, которая содержит продажи продукции по территории, и вы впоследствии импортируете демографические данные, чтобы узнать, есть ли корреляция между продажами и демографическими тенденциями на каждой территории. Так как демографические данные поступают из различных источников, то их таблицы первоначально изолированы от остальной части модели. Для интеграции демографических данных с остальной частью своей модели вам нужно будет найти столбец в одной из демографических таблиц, соответствующий тому, который вы уже используете. Например, если демографические данные организованы по регионам и ваши данные о продажах определяют область продажи, то вы могли бы связать два набора данных, найдя общие столбцы, такие как государство, почтовый индекс или регион, чтобы обеспечить подстановку.
Кроме совпадающих значений есть несколько дополнительных требований для создания связей.
-
Значения данных в столбце подстановки должны быть уникальными. Другими словами, столбец не может содержать дубликаты. В модели данных нули и пустые строки эквивалентны пустому полю, которое является самостоятельным значением данных. Это означает, что не может быть несколько нулей в столбце подстановок.
org/ListItem»>
Типы данных столбца подстановок и исходного столбца должны быть совместимы. Подробнее о типах данных см. в статье Типы данных в моделях данных.
Подробнее о связях таблиц см. в статье Связи между таблицами в модели данных.
К началу страницы
Power Query: как объединить таблицы с разными столбцами
В этом посте я покажу вам, как выполнить условное слияние таблиц в power query. Для этого конкретного примера мы можем сделать это обычным способом, с чего мы и начнем. Затем я покажу вам, как сделать условное слияние.
Загрузите бесплатные ресурсы здесь
Давайте посмотрим, с чем мы имеем дело. Во-первых, у нас есть таблица Usage , которая устанавливается в середине месяца.
Затем у нас есть вторая таблица, Таблица цен , которая устанавливается в начале месяца.
Мы хотим узнать цену на конкретную дату, что мы можем сделать в DAX. Давайте продублируем таблицу Usage , перейдем к Merge Queries , а затем выберем таблицу Price .
Как видно из изображения выше, даты из двух столбцов дат не совпадают, что означает, что мы не можем нормально объединять таблицы. Обычное слияние использует левое внешнее или правое внешнее слияние. Поскольку совпадения нет, мы не можем выполнить обычное слияние.
То, что мы собираемся сделать, — это полное внешнее слияние, потому что оно выберет все строки из таблицы Usage и все строки из таблицы Price и соединит их все вместе. Если совпадений нет, он просто добавит строки.
Поскольку нет совпадающих дат, обе таблицы добавляются следующим образом:
Добавление пользовательского столбца в Power Query
Мы можем очень легко добавить пользовательский столбец , в котором говорится, что если дата использования пуста, выберите дату из таблицы цен; в противном случае дайте мне дату от Таблица использования .
Теперь у нас есть полный столбец с датами.
Чтобы понять это, мы отсортируем пользовательский столбец «Даты».
Вы можете видеть, что первый столбец — это использование, а третий — цена. Если мы заполним столбец стоимости…
… мы фактически получим дату, стоимость и использование.
Это обычное слияние, но я думаю, что условное слияние также может быть очень полезным в подобных случаях. Итак, позвольте мне показать вам, что нам нужно сделать, чтобы выполнить условное слияние. Мы скажем, что если дата использования больше, чем дата ценообразования, то получите число.
Сначала мы обратимся к нашей таблице цен .
И затем мы нажимаем Фильтры даты затем До .
Если мы выберем февраль, будет показано 21 число.
Если сейчас март, в нем будет две строки, потому что есть две цены меньше.
Если мы выберем апрель, то получим вот это.
Нам всегда нужны самые свежие цены. Итак, мы будем сортировать их в порядке убывания и детализировать .
Итак, теперь у нас есть нужное нам число — 45.
Создание переменной в Power Query
Чтобы переместить это в таблицу Usage, мы создадим функцию для цены. Вместо того, чтобы вводить эту дату вручную, у нас будет таблица Usage , заполняющая эту дату.
Мы перейдем в расширенный редактор и создадим переменную для функции, которая будет UsageDate как дата .
Перейдем к нашей таблице использования и примените эту функцию. Это состояние использования, которое мы собираемся передать нашей функции. Мы перейдем на вкладку Add Column , щелкните Custom Invoke Function и возьмем переменную, где столбец для подачи — это дата использования.
Вот и все. Как видите, реализовать решение условного слияния в power query достаточно просто.
Заключение
В сегодняшнем блоге мы обсудили, как объединить таблицы с разными столбцами в power query. Если вам понравился контент, описанный в этом конкретном руководстве, не забудьте подписаться на канал Enterprise DNA TV. У нас постоянно появляется огромное количество контента от меня и ряда создателей контента, и все они посвящены улучшению того, как вы используете Power BI и Power Platform.
Сэм
Скачать бесплатные ресурсы здесь
***** Learning Power BI? *****
БЕСПЛАТНЫЙ КУРС — Полное руководство для начинающих по Power BI
БЕСПЛАТНЫЙ КУРС — Полное руководство для начинающих по DAX
БЕСПЛАТНО — 60-страничное справочное руководство по DAX Скачать
БЕСПЛАТНО — Power BI Resource
Enterprise DNA On-Demand
Доступ к платформе Enterprise DNA
События Enterprise DNA
***** Ссылки по теме *****
Объединение запросов в Power BI
Динамическое объединение столбцов в таблице Power Query
Рекомендации Power Query для вашей модели данных
***** Связанные модули курса *****
Основы Power Query и M
Прикладное решение проблем с помощью Power Query/M
Power Query Series
***** Связанные сообщения поддержки на форуме *****
Очистка грязных данных в Power Query
Очистка параметров, установленных в Power Query
Запрос GraphQL и загрузка в Power Query
Дополнительные сведения о Power Query см. здесь….
Опубликовано Сэмом Маккеем, CFA
Сэм — генеральный директор и основатель Enterprise DNA. Он помогает отдельным лицам и организациям развивать культуру, основанную на данных, и создавать ценность предприятия, проводя обучение и обучение бизнес-аналитике на платформе Microsoft Power BI. Просмотреть все сообщения Сэма Маккея, CFA
sql — найти разницу между двумя таблицами с разными ключами
спросил
Изменено 1 год, 6 месяцев назад
Просмотрено 255 раз
У меня есть таблица A, которая выглядит так:
id | имя |
---|---|
а1 | А1 |
а2 | А2 |
б2 | В2 |
и таблица B, которая выглядит так:
volume_id | имя_тома |
---|---|
а1 | А1 |
б1 | В1 |
б2 | В2 |
Я хочу сделать запрос (или несколько), который даст мне идентификатор (или Volume_id, поскольку они представляют одно и то же), который существует в таблице A, но не в таблице B, и наоборот.
Я использую psql в качестве клиентского интерфейса postgres.
- sql
- postgresql
- левое соединение
- существует
- полное внешнее соединение
от полного соединения б на a.id = b.volume_id где a.id равен нулю или b.volume_id равен нулю;
Это помещает результаты в отдельные столбцы, чтобы вы могли видеть, чего не хватает.
Вы можете использовать FULL JOIN , который будет отображать значения, присутствующие в столбце A, но не в столбце B.
выбрать t1.id, t2.volumeid из a как полное соединение t1 b как t2 для t1.id=t2.volumeid;
В качестве примечания, вы также можете использовать LEFT JOIN в аналогичных обстоятельствах, чтобы выполнить это, но вы должны убедиться, что столбец слева содержит все значения, включенные в a и b, или вы найдете ситуация, при которой дополнительные значения из таблицы не будут отображаться, если они находятся в правом столбце.