Объедините две таблицы в одном столбце в Excel или OpenOffice - PullRequest
27 голосов
/ 12 ноября 2010

У меня есть два CSV-файла с общим столбцом, и я хочу объединить таблицы в общем столбце.

Например: Соединение «А» с «В» равно «Результат».Если в одной таблице есть ключевое значение, которого нет в другой таблице, его просто оставляют пустым.

== Table A ==        == Table B ==        == Table result ==
Name  ,Age           Name  ,Sex           Name ,Age ,Sex
Bob   ,37     +      Bob   ,Male     =>   Bob  ,37  ,Male
Steve ,12            Steve ,Male          Steve,12  ,Male
Kate  , 7                                 Kate , 7  , 
                     Sara  ,Female        Sara ,    ,Female 

Я знаю, как это сделать с базой данных SQL, но я никогда не делал этого с помощью «Excel» или «OpenOffice.org Calc»

Предложения?

Ответы [ 3 ]

32 голосов
/ 12 ноября 2010

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

Чтобы выполнить внешнее объединение для вашего примера выше, добавьте следующее в C2 таблицы "B" (или скопируйте "Table B", а затем сделайте это):

=vlookup(
    a2, # the cell value from the current table to look up in the other table
    table_a!$1:$174832718, # the other table
                           # don't manually type this--select the entire 
                           # other table while the cursor is editing this
                           # cell, then add the "$"s--Excel doesn't
                           # automatically add them
                           # (the syntax here is for different sheets in
                           # the same file, but Excel will fill this in 
                           # correctly for different files as well)
    2, # the column to get from the other table (A=1, B=2, etc.)
    FALSE) # FALSE=only get exact matches TRUE=find approx. matches if no exact match

После этого вы сможете расширить его для работы с несколькими строками и несколькими импортированными столбцами.

9 голосов
/ 12 ноября 2010

В Excel вы используете для этого VLOOKUP.
Предположим, у вас есть данные в таблице A, перечисленные в столбцах A и B в Excel.
И данные в таблице B перечислены в столбцах E и F.
Теперь перейдите к первой строке в столбце C и введите:

=VLOOKUP(A:A,E:F,2,FALSE) 

Это говорит о том, что нужно попытаться сопоставить столбец A со столбцом E и взять все, что находится во 2-м столбце рядом с тем местом, где мы нашлии поместите его в столбец C.
Теперь автоматически заполните остальные строки в столбце C, чтобы сопоставить их с остальными данными.

2 голосов
/ 10 октября 2014

Если вы можете использовать Excel, есть функция Query from Excel Files:

  • Определить имя для первичной таблицы - Таблица A (вкладка Формулы -> Определить имя)
  • Определить имя для вторичной таблицы - Таблица B
  • Перейдите на вкладку «Данные», выберите «Из других источников» и в раскрывающемся списке выберите «Из запроса Microsoft»
  • Выберите файл CSV и подтвердите, что вы хотите объединить столбцы вручную
  • В следующем окне «Запрос из файлов Excel» перетащите столбец «Имя» таблицы A в столбец «Имя» таблицы B - будет создана связь между этими столбцами
  • Перейдите в меню «Файл», нажмите «Вернуть данные в MS Office Excel», появится диалоговое окно «Импорт данных»
  • Выберите лист, на который вы хотите импортировать сопоставленные данные
  • Нажмите ОК - вы должны увидеть совпадающие данные с колонками из обеих таблиц

Или, если вы не возражаете загрузить свои файлы CSV в онлайн-сервис, вы можете использовать, например, http://www.gridoc.com/join-tables и присоединяться к электронным таблицам с помощью перетаскивания (Отказ от ответственности: я автор инструмента).

Надеюсь, это поможет.

...