如何像在 SQL 中一样在 Excel 中连接两个工作表?

Joe*_*orn 132 microsoft-excel

我在两个不同的 Excel 文件中有两个工作表。它们都包含名称、ID 号和相关数据的列表。一个是包含一般人口统计字段的主列表,另一个是仅包含姓名和 ID 以及地址的列表。这份清单是由另一个办公室从主清单中删减的。

我想使用第二个列表来过滤第一个列表。此外,我希望结果包括主工作表中的其他字段以及第二个工作表中的地址字段。我知道如何使用数据库内部联接轻松完成此操作,但我不太清楚如何在 Excel 中有效地执行此操作。如何在 Excel 中连接两个工作表?展示如何进行外连接的加分项,我非常希望知道如何在不需要宏的情况下执行此操作。

Apr*_*ion 162

对于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
Run Code Online (Sandbox Code Playgroud)

  • 作为额外的奖励,Microsoft Query 使您可以体验用于打开 Excel 文件和消息框的 16 位样式的通用控件。这样你就可以记住你年轻的时候了。:-) (32认同)
  • 请注意,您可能会看到一个对话框,提示“此数据源不包含可见表”,然后是“查询向导 - 选择列”对话框。您要从*此* 对话框中单击“选项”按钮,然后选中“系统表”复选框以查看要查询的数据。 (3认同)

小智 14

支持接受的答案。我只想强调“选择列(如果您没有看到任何列列表,请务必检查选项 > 系统表)”

一旦你选择了 excel 文件,你很可能会看到this data source contains no visible tables提示,并且可用的选项卡和列都没有。微软承认这是一个错误 ,即excel文件中的选项卡被视为“系统表”,并且默认情况下未选择“系统表”选项。所以在这一步不要着急,你只需要点击“选项”并选中“系统表”,然后你就会看到可用的列。


小智 11

VLOOKUP 和 HLOOKUP 可用于搜索匹配的主键(垂直或水平存储)并从“属性”列/行返回值。


小智 8

您可以使用 Microsoft Power Query,可用于较新版本的 Excel(类似于已接受的答案,但更简单、更容易)。Power Query 调用加入“合并”。

最简单的方法是将 2 个 Excel 工作表作为 Excel 表格。然后在 Excel 中,转到 Power Query 功能区选项卡,然后单击“来自 Excel”按钮。将两个表都导入 Power Query 后,选择一个并单击“合并”。

  • 比任何其他提议的选项都容易得多。这应该是答案!**Power Query** 现在包含在 Excel 2016 中的**数据** 选项卡下。 (3认同)
  • Mac 上似乎不存在的另一个功能 (3认同)

Diz*_*ley 5

虽然我认为 Aprillion 使用 Microsoft Query 的回答非常好,但它激励我使用Microsoft Access加入我发现更容易的数据表。

当然,您需要安装 MS Access。

脚步:

  • 创建一个新的 Access 数据库(或使用临时数据库)。
  • 使用Get External Data导入Excel数据作为新表。
  • 使用Relationships显示您如何联接表。
  • 设置关系类型以匹配您想要的(代表左连接等)
  • 创建一个连接表的新查询。
  • 使用External Data->Export to Excel产生的结果。

如果没有 Aprillion 的出色回答,我真的无法做到这一点。