Như tiêu đề, ai giúp dùm mình, với 2 danh sách rất dài. Em càn làm báo cáo gấp.
Ai làm giúp có thể chỉ cách làm trực tiếp để em làm luôn. Cám ơn nhiều.
(sỏry KH Biet, mạn phép mượn file của bạn)
Dùng ADO thử:
- Sheet1 đặt name cho vùng A3
20 là Data1
- Sheet2 đặt name cho vùng A3
22 là Data2
- Tạo thêm 1 sheet mới và đặt tên là ketqua
- Chèn code sau vào module rồi chạy thử.
[GPECODE=sql]Sub LayDL()
Dim cn As Object, rst As Object
Dim mySQL As String
Set cn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
.Open
End With
mySQL = " SELECT Data1.[" & Sheet1.[A3] & "]," ' Cot stt
mySQL = mySQL & " Data1.[" & Sheet1.[B3] & "]," ' Cot ten liet si
mySQL = mySQL & " Data1.[" & Sheet1.[C3] & "]," ' Cot nam sinh
mySQL = mySQL & " Data1.[" & Sheet1.[D3] & "] " ' Cot nguyen quan
mySQL = mySQL & "FROM [Data1] " ' Name Data1 o sheet1
mySQL = mySQL & " INNER JOIN [Data2] " ' Join voi Name Data2 o sheet2
mySQL = mySQL & " ON [Data1].[" & Sheet1.[B3] & "] = [Data2].[" & Sheet1.[B3] & "];"
Set rst = cn.Execute(mySQL)
With Sheets("ketqua")
.[A2:H1000].ClearContents
.[A2].CopyFromRecordset rst
End With
rst.Close: cn.Close
Set rst = Nothing: Set cn = Nothing
End Sub
[/GPECODE]