如何在 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/
有没有办法使用 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/