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

How to inner-join in Excel (eg. using 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 之外还有更好的方法吗?

谢谢。

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

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

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

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

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

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

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

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

这将 return 来自 Sheet 1 匹配的值。

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

首先,selectData > From other sources > From Microsoft Query

然后 select "Excel Files*".

在 "Select Workbook" windows 中,您必须 select 当前工作簿。

接下来,在查询向导windows、select sheet1$和sheet2$中点击“>”按钮。

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

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

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

最后关闭编辑器,把table放到你需要的地方。

结果应如下所示:

对于基本 Excel 加入没有公式或 Excel 宏。请查看网站 http://exceljoins.blogspot.com/2013/10/excel-inner-join.html

Join 可以在极少数情况下使用 Left Outer、Right Outer 和 Full Outer,但我们可以为 Excel Sheets 实现此目的,有关更多信息,请查看以下内容 http://exceljoins.blogspot.com/