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

时间:2016-02-02 22:10:42

标签: sql excel inner-join vlookup

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

在SQL中,我会这样做:

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

Sheet 1中:

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

Sheet 2中:

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

结果将是:

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

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

感谢。

3 个答案:

答案 0 :(得分:3)

首先让我们获取两个表中存在的值列表。如果您使用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'd列表。这确实假设ID是数字而不是文本。

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

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

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

enter image description here

答案 1 :(得分:2)

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

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

enter image description here

然后选择&#34; Excel文件*&#34;。

在&#34;选择工作簿&#34; Windows,您必须选择当前的工作簿。

接下来,在查询向导窗口中,选择sheet1 $和sheet2 $并单击&#34;&gt;&#34;按钮。 enter image description here

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

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

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

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

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

答案 2 :(得分:0)

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

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