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

问题描述 投票:8回答:3

是否可以使用VLOOKUP内部联接两个不同的Excel电子表格?

在SQL中,我会这样:

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

Sheet1:

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

Sheet2:

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

结果将是:

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

如何在VLOOKUP中执行此操作?还是除了VLOOKUP之外还有更好的方法?

谢谢。

sql excel inner-join vlookup
3个回答
4
投票

首先让我们获取两个表中都存在的值的列表。如果您使用的是excel 2010或更高版本,则在工作表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),"")

这将返回表1中匹配的值。

enter image description here


4
投票

您可以使用Microsoft Query达到此结果。

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

enter image description here

然后选择“ Excel Files *”。

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

[下一步,在查询向导窗口中,选择sheet1 $和sheet2 $,然后单击“>”按钮。enter image description here

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

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

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

最后关闭编辑器,然后将表放在需要的位置。

结果应如下所示:enter image description here


0
投票

对于不带形式或Excel宏的基本Excel连接。请检查网站http://exceljoins.blogspot.com/2013/10/excel-inner-join.html

Joins可以在很少的场合使用左外,右外和全外,但是我们可以在Excel Sheets中实现,有关更多信息,请检查以下内容http://exceljoins.blogspot.com/

© www.soinside.com 2019 - 2024. All rights reserved.