Как объединить две таблицы в Excel, как в SQL?

121

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

Я хочу использовать 2-й список для фильтрации первого. Кроме того, я хочу, чтобы результаты включали другие поля из главной таблицы вместе с полями адреса из второй таблицы. Я знаю, как можно легко это сделать с помощью внутреннего соединения с базой данных, но я не совсем понимаю, как это сделать эффективно в Excel. Как можно объединить две таблицы в Excel? Бонусные баллы за показ того, как выполнять внешние объединения, и я бы предпочел знать, как это сделать без макроса.

Джоэл Коухорн
источник
1
Я нахожу следующую страницу очень полезной: randomwok.com/excel/how-to-use-index-match
Томми Браво
randomwok.com/excel/how-to-use-index-match => особенно легкое «напоминание» в конце:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Томми Браво,

Ответы:

157

Для 2007+ использования Data> From Other Sources> From Microsoft Query:

  1. выбрать Excel Fileи выбрать свой первый Excel
  2. выберите столбцы
    (если вы не видите списка столбцов, обязательно отметьте Options> System Tables)
  3. перейти к Data> Connections> [выбрать подключение только что созданный]> Properties> Definition>Command text

Теперь вы можете редактировать это Command textкак SQL. Не уверен, какой синтаксис поддерживается, но я пробовал неявные объединения, "внутреннее соединение", "левое соединение" и объединения, которые все работают. Вот пример запроса:

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2
Aprillion
источник
1
Есть ли способ избежать жесткого кодирования пути? Будет ли относительный путь работать?
Рекин
25
В качестве дополнительного бонуса Microsoft Query позволяет вам использовать Common Controls в 16-битном стиле для открытия файла Excel и для окон сообщений. Таким образом, вы можете вспомнить, когда вы были молоды. :-)
Эдвард Брей,
Работает ли это с файлами CSV? Я использую MS Office Professional Plus 2010 и не вижу, как выполнить шаг 3 - я оставляю диалоговое окно на шаге 2 зависшим? В моем диалоговом окне «Подключения» нет «выбрать новое подключение».
Джон Фриман
@JohnFreeman, потому что вам нужно выбрать один из доступных вариантов в соответствии с вашими потребностями (например, «Добавить ...»)
апрель
3
Обратите внимание, что может появиться диалоговое окно с надписью «Этот источник данных не содержит видимых таблиц», за которым следует диалоговое окно «Мастер запросов - Выбор столбцов». В этом диалоговом окне вы хотите нажать кнопку «Параметры», а затем установить флажок «Системные таблицы», чтобы увидеть данные, которые вы хотите запросить.
Тола Одежаи
11

Поддержите принятый ответ. Я просто хочу подчеркнуть "выбрать столбцы (если вы не видите списка столбцов, обязательно проверьте Параметры> Системные таблицы)"

После выбора файла Excel, скорее всего, вы увидите this data source contains no visible tablesподсказку, а доступных вкладок и столбцов нет. Microsoft признала, что ошибка в том, что вкладки в файлах Excel рассматриваются как «Системные таблицы», а опция «Системные таблицы» по умолчанию не выбрана. Так что не паникуйте на этом шаге, вам просто нужно нажать «опция» и проверить «Системные таблицы», после чего вы увидите доступные столбцы.

Бен Лин
источник
8

VLOOKUP и HLOOKUP могут использоваться для поиска совпадающих первичных ключей (хранящихся вертикально или горизонтально) и возврата значений из столбцов / строк «атрибута».

Рувим Л.
источник
очень полезно для листов в одной и той же книге (но я считаю, что функции INDEX + MATCH еще более полезны), немного сложнее при обновлении данных из закрытых внешних книг ...
Aprillion
7

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

Самый простой способ - это получить 2 листа Excel в виде таблиц Excel. Затем в Excel перейдите на вкладку ленты Power Query и нажмите кнопку «Из Excel». После того, как вы импортировали обе таблицы в Power Query, выберите одну и нажмите «Объединить».

anotherfred
источник
3
Намного проще, чем любой из предложенных вариантов. Это должен быть ответ! Power Query теперь включен в Excel 2016 на вкладке « Данные ».
SliverNinja - MSFT
1
Еще одна особенность, которая, кажется, не существует на Mac j
juandesant
4

Хотя я думаю, что ответ Aprillion с использованием Microsoft Query превосходен, это вдохновило меня на использование Microsoft Access для присоединения к таблицам данных, которые мне показались намного проще.

Конечно, вам нужно установить MS Access.

шаги:

  • Создайте новую базу данных Access (или используйте чистую базу данных).
  • Используйте Get External Dataдля импорта данных Excel в виде новых таблиц.
  • Используйте, Relationshipsчтобы показать, как соединяются ваши таблицы.
  • Установите тип Отношения, чтобы соответствовать тому, что вы хотите (представляющий левое соединение и т. Д.)
  • Создайте новый запрос, который объединит ваши таблицы.
  • Используйте External Data->Export to Excelдля генерации ваших результатов.

Я действительно не мог бы сделать это без отличного ответа Aprillion.

Dizzley
источник
Я никогда не использовал доступ до сегодняшнего дня, но это заняло у меня всего 10 минут. Я копирую / вставляю столбцы Excel в 2 таблицы вместо импорта.
Джиггунджер
3

Вы не можете предварительно сформировать соединения в стиле SQL в таблицах Excel из Excel. Тем не менее, есть несколько способов выполнить то, что вы пытаетесь сделать.

В Excel, как говорит Рувим, формулы, которые, вероятно, будут работать лучше, VLOOKUPи HLOOKUP. В обоих случаях вы сопоставляете уникальную строку, и она возвращает значение данного столбца \ строки влево \ вниз от найденного идентификатора.

Если вы хотите добавить только пару дополнительных полей во второй список, добавьте формулы во второй список. Если вы хотите таблицу стилей "external join", добавьте VLOOKUPформулу в первый список, ISNAчтобы проверить, был ли найден поиск. Если в справке Excel недостаточно подробностей о том, как их использовать в вашем конкретном случае, сообщите нам об этом.

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

mischab1
источник
12
на самом деле, вы можете - это называется Microsoft Query
Aprillion
3

На XLTools.net мы создали хорошую альтернативу для MS Query, особенно для работы с SQL-запросами к таблицам Excel. Это называется XLTools SQL Queries . Его гораздо проще использовать, чем MS Query, и он работает действительно хорошо, если вам просто нужно создать и запустить SQL - без VBA, без сложных манипуляций с MS Query ...

С помощью этого инструмента вы можете создать любой SQL-запрос к таблицам в книгах Excel с помощью встроенного редактора SQL и сразу же запустить его с возможностью поместить результат на новый или любой существующий лист.

Вы можете использовать практически любой тип соединения, включая LEFT OUTER JOIN (только RIGHT OUTER JOIN и FULL OUTER JOIN не поддерживаются).

Вот пример:

XLTools SQL Queries - Query Builder

Петр Ляпин
источник
2

Для пользователей Excel 2007: Данные> Из других источников> Из Microsoft Query> перейдите к файлу Excel

Согласно этой статье , запрос из XLS версии 2003 может привести к «Этот источник данных не содержит видимых таблиц». ошибка, потому что ваши рабочие листы рассматриваются как таблица SYSTEM. Поэтому проверяйте параметры «Системные таблицы» в диалоговом окне «Мастер запросов - выберите столбцы», когда вы создаете запрос, который будет работать.

Чтобы определить ваше объединение: диалоговое окно Microsoft Query> меню «Таблица»> «Объединения ...»

Чтобы вернуть данные на исходный лист Excel, выберите «Вернуть данные в лист Excel» в диалоговом окне Microsoft Query> меню «Файл».

clarkttfu
источник
0

Если вы достаточно знакомы с базами данных, вы можете использовать SQL Server для подключения обеих таблиц в качестве связанных серверов, а затем использовать T-SQL для выполнения ваших внутренних данных. Затем закончите, подключив Excel обратно к SQL и вытяните данные в таблицу (обычную или сводную). Вы также можете рассмотреть возможность использования Powerpivot; это позволит объединять любые источники базы данных, включая Excel, используемый в качестве плоских баз данных.

DAV
источник
2
Вы правы, но первоначальный вопрос основан на использовании электронной таблицы (или двух) для выполнения функции базы данных, поэтому я не уверен в каком-либо действительно эффективном способе выполнить задачу.
Дав