我不知道采取什么方法,但想知道我可以从两个excel表中加入数据并填入第三张表,就像我们如何使用VBA加入SQL一样。示例数据如下,我想通过Emp_id加入Sheet1和Sheet2,并在Sheet3中填充结果。我已经google了很多,并尝试了我所知道的任何东西,但我无处可去得到这个,有人可以对此有所了解或分享一个工作的例子,这将是伟大的。我还在努力,如果我得到解决方案,我会发帖。
答案 0 :(得分:0)
以下是我的工作,再次查询以下是示例数据。对于我的实际数据,我必须得到工作表编号以使用工作表名称(示例[Sheet2 $]替换为[Sheet]& Sheets(“Source”)。索引和“$”使用“Source”作为表格代替“Sheet2”。
我必须使用LEFT JOIN,因为我只得到JOIN的错误,后来从Sheet3中删除了Sheet1中不匹配的记录的额外行,你也可能不得不使用UNION函数,因为如果不支持FULL JOIN你想要来自两个表的数据。
希望这对某人有帮助......
Option Explicit
Sub JoinTables()
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Name & ";" & _
"Extended Properties=Excel 8.0;"
.Open
End With
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "SELECT * FROM [Sheet2$] LEFT JOIN [Sheet1$] ON [Sheet2$].[Emp_id] = [Sheet1$].[Emp_id]", cn
With Worksheets("Sheet3")
.Cells(2, 1).CopyFromRecordset rs
End With
rs.Close
cn.Close
End Sub
答案 1 :(得分:0)
cn As New ADODB.Connection
rec As New ADODB.Recordset
cn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & _
ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
SQLquery = "SELECT [Sheet2$].[Emp_id],[Sheet2$].[Hobies],[Sheet1$].[Salary] FROM [Sheet2$] INNER JOIN [Sheet1$] ON [Sheet2$].[Emp_id]=[Sheet1$].[Emp_id]"
rec.Open SQLquery, cn, adOpenKeyset, adLockOptimistic
Sheets("Sheet3").Range("A1").CopyFromRecordset rec