如何在 Excel 中进行内连接(例如,使用 VLOOKUP)

新手上路,请多包涵

有没有办法使用 VLOOKUP 内部连接两个不同的 Excel 电子表格?

在 SQL 中,我会这样做:

 SELECT id, name
FROM Sheet1
INNER JOIN Sheet2
ON Sheet1.id = Sheet2.id;

表 1:

 +----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  3 | C    |
|  4 | D    |
+----+------+

表2:

 +----+-----+
| ID | Age |
+----+-----+
|  1 |  20 |
|  2 |  21 |
|  4 |  22 |
+----+-----+

结果将是:

 +----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  4 | D    |
+----+------+

如何在 VLOOKUP 中执行此操作?或者除了VLOOKUP还有更好的方法吗?

谢谢。

原文由 Wabbage 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 996
2 个回答

首先让我们获取两个表中都存在的值列表。如果您使用的是 excel 2010 或更高版本,则在 Sheet 3 A2 中输入以下公式:

 =IFERROR(AGGREGATE(15,6,Sheet2!$A$1:$A$5000/(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000)>0),ROW(1:1)),"")

如果您使用的是 2007 或更早版本,请使用以下数组公式:

 =IFERROR(SMALL(IF(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000),Sheet2!$A$1:$A$5000),ROW(1:1)),"")

作为数组公式,复制并粘贴到公式栏中,然后按 Ctrl-Shift-Enter 而不是 Enter 或 Tab 以离开编辑模式。

然后根据需要复制尽可能多的行。这将创建两个列表中的 ID 列表。这确实假设 ID 是一个数字而不是文本。

然后使用该列表,我们使用 vlookup:

 =IF(A2<>"",VLOOKUP(A2,Sheet1!A:B,2,FALSE),"")

然后,这将返回 Sheet 1 中匹配的值。

在此处输入图像描述

原文由 Scott Craner 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 Microsoft Query 获得此结果。

首先选择 Data > From other sources > From Microsoft Query

在此处输入图像描述

然后选择“Excel 文件*”。

在“选择工作簿”窗口中,您必须选择当前工作簿。

接下来,在查询向导窗口中,选择 sheet1\( 和 sheet2\) 并单击“>”按钮。 在此处输入图像描述

单击下一步,查询可视化编辑器将打开。

单击 SQL 按钮并粘贴此查询:

 SELECT `Sheet1$`.ID, `Sheet1$`.Name, `Sheet2$`.Age
FROM`Sheet1$`, `Sheet2$`
WHERE `Sheet1$`.ID = `Sheet2$`.ID

最后关闭编辑器并将表格放在您需要的地方。

结果应如下所示: 在此处输入图像描述

原文由 Seb 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题