如何内部加入Excel(例如使用VLOOKUP)

Wab*_*age 8 sql excel inner-join vlookup

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

在SQL中,我会这样做:

SELECT id, name
FROM Sheet1
INNER JOIN Sheet2
ON Sheet1.id = Sheet2.id;
Run Code Online (Sandbox Code Playgroud)

工作表Sheet1:

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  3 | C    |
|  4 | D    |
+----+------+
Run Code Online (Sandbox Code Playgroud)

Sheet2中:

+----+-----+
| ID | Age |
+----+-----+
|  1 |  20 |
|  2 |  21 |
|  4 |  22 |
+----+-----+
Run Code Online (Sandbox Code Playgroud)

结果将是:

+----+------+
| ID | Name |
+----+------+
|  1 | A    |
|  2 | B    |
|  4 | D    |
+----+------+
Run Code Online (Sandbox Code Playgroud)

我怎么能在VLOOKUP中这样做?或者除了VLOOKUP之外还有更好的方法吗?

谢谢.

Seb*_*Seb 5

您可以使用 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
Run Code Online (Sandbox Code Playgroud)

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

结果应该是这样的: 在此处输入图片说明


Sco*_*ner 4

首先让我们获取两个表中都存在的值的列表。如果您使用的是 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)),"")
Run Code Online (Sandbox Code Playgroud)

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

=IFERROR(SMALL(IF(COUNTIF(Sheet1!$A$1:$A$5000,Sheet2!$A$1:$A$5000),Sheet2!$A$1:$A$5000),ROW(1:1)),"")
Run Code Online (Sandbox Code Playgroud)

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

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

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

=IF(A2<>"",VLOOKUP(A2,Sheet1!A:B,2,FALSE),"")
Run Code Online (Sandbox Code Playgroud)

然后,这将返回工作表 1 中匹配的值。

在此输入图像描述