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之外还有更好的方法吗?
谢谢.
您可以使用 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)
最后关闭编辑器并将表格放在您需要的地方。
首先让我们获取两个表中都存在的值的列表。如果您使用的是 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 中匹配的值。