我使用的是 Excel (Microsoft 365),并且有两个结构相同的表,每个表都有自己的工作表。这两个工作表位于同一工作簿中。第一个工作表及其保存的表都被命名为Table_A
。第二个工作表及其保存的表都被命名为Table_B
。两个表都有字段Field_A
, Field_B
, Field_C
。在每个表中,Field_A
每行都有一个唯一的值(即,可以被认为是数据库用语中的主键)。
我有第三个工作表,名为Join
. 该工作表与上述前两个工作表位于同一工作簿中。在此工作表中,我想创建一个名为 的表Join
,其中填充了如果我使用 SQL Server 而不是 Excel 时通过以下 T-SQL 语句获得的数据:
SELECT Table_A.Field_A, Table_A.Field_B, Table_B.Field_B, Table_A.Field_C, Table_B.Field_C
FROM Table_A INNER JOIN Table_B
ON Table_A.Field_A = Table_B.Field_A;
如何在 Excel 工作簿中执行此操作?请注意,由于这全部是独立于单个工作簿中的,因此我想避免将任何文件名引用作为数据源。
Power Query 就是您正在寻找的工具。
假设这是我们的数据。为了清楚起见,我将表 2 中的列命名为 D 和 E,而不是重复 B 和 C。
表格1
表2:
首先,右键单击Table1并选择从表/范围获取数据。
Power Query 编辑器窗口将打开,并显示名为Table1的新数据源。
在左上角,单击“关闭并加载”下的向下箭头按钮,然后选择“关闭并加载到...”选项。在下一个框中,选择仅创建连接,然后单击确定。
编辑器将关闭,“查询和连接”面板应出现在右侧。现在,我们将通过右键单击并选择“从表/范围获取数据”来添加 Table2 。
Power Query 编辑器将再次打开。左侧有一个名为“查询”的面板。右键单击 Table2 下面的空间,然后选择“新建查询”>“合并”>“合并查询为新查询”。
现在,您可以根据需要配置联接 - 在本例中,选择Table1,然后选择 Table2,单击以选择列Field1A然后列Field2A,最后从下拉列表中选择联接类型Inner (仅匹配行)。单击“确定”。
您将看到 Power Query 中出现一个名为Merge1的新数据源。在右侧,您将看到 Table2 显示为一列,但这些列不会展开 - 您需要单击展开按钮才能展开。如果您不想,可以选择不再显示连接字段。
现在,单击左上角的“关闭并加载”按钮,连接表将在工作簿中显示为新工作表。仅当您单击刷新新的Table_Merge1时,Table1 和 Table2 中所做的更改才会级联。