在Excel或OpenOffice中,如何通过一个共同的列将两个电子表格合并?

30

我有两个带有共同列的CSV文件,我想在共同列上将这两个表格“连接”起来。

例如:将A与B连接等于Result。如果一个表格具有在另一个表格中不存在的键值,则该键值将被留空。

== 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
在Excel中,vlookup可以完成你要求的部分功能。具体而言,你可以使用vlookup进行左外连接或右外连接,但无法进行完全外连接(如你所示的表结果)。
为了针对上述示例进行外连接,在“表B”的C2单元格中添加以下内容(或复制“表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

你应该能够扩展它以处理多行和多个导入列。


1
要执行完全外连接,您可以在两个方向上执行VLOOKUP操作,因此将表1合并到表2中,同时将表2合并到表1中。然后使用宏或手动(复制粘贴)将两个表合并成一个单独的表,并在结果表上使用去重复函数。 - Jan
只是要提一下,在vlookup函数起作用时,第一个变量(在这种情况下是a2)必须位于第一列。 - Goran Jakovljevic

10

在Excel中,您可以使用VLOOKUP函数实现此操作。
假设您在Excel中将数据列在表A的A和B列中。
并且将数据列在表B的E和F列中。
现在,转到C列的第一行并输入:

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

这告诉它尝试将列A与列E进行匹配,并获取在找到的位置附近的第二列中的任何内容,并将其放置在列C中。
现在自动填充列C中的其余行,以匹配其余数据。


2
如果您能使用Excel,可以使用“来自Excel文件的查询”功能:
  • 为主表定义名称 - 表A(公式选项卡 -> 定义名称)
  • 为辅助表定义名称 - 表B
  • 转到数据选项卡,选择“从其他来源”,并从下拉列表中选择“从Microsoft Query”
  • 选择您的CSV文件并确认您要手动合并列
  • 在以下窗口“来自Excel文件的查询”中,将表A的Name列拖放到表B的Name列中 - 将创建这些列之间的链接
  • 转到文件菜单,单击“返回数据到MS Office Excel”,将弹出导入数据对话框
  • 选择您希望将匹配数据导入的工作表
  • 单击确定 - 您应该会看到来自两个表的列的匹配数据

或者,如果您不介意将CSV文件上传到在线服务,则可以使用例如http://www.gridoc.com/join-tables并使用拖放加入电子表格(免责声明:我是该工具的作者)。

希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接