[英]How to join two excel worksheets based on a column as key using VBA
下面適用於我的,下面的查詢再次用於示例數據。 對於我的實際數據,我必須獲取工作表編號以使用工作表名稱(例如 [Sheet2$] 替換為 [Sheet” & Sheets("Source").Index & "$] 以使用“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
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.