Sub LayDuLieu()
Dim cn As Object, rst As Object
Dim Tmr As Double
Dim strSQL As String
Tmr = Timer()
Set cn = CreateObject("ADODB.Connection")
cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";")
strSQL = ""
strSQL = strSQL & "SELECT [Thongke_01$].* " & vbCrLf
strSQL = strSQL & "FROM (SELECT Year([Ngày]) AS Nam, Month([Ngày]) AS Thang, Max(Day([Ngày])) AS Ngay, DateSerial(Year([Ngày]),Month([Ngày]),Max(Day([Ngày]))) AS MaxDate " & vbCrLf
strSQL = strSQL & "FROM [Thongke_01$] " & vbCrLf
strSQL = strSQL & "GROUP BY Year([Ngày]), Month([Ngày])) AS Lay_Ngay INNER JOIN [Thongke_01$] ON Lay_Ngay.MaxDate = [Thongke_01$].Ngày"
Set rst = cn.Execute(strSQL)
With Sheet2
.[A2:K150].ClearContents
.[A2].CopyFromRecordset rst
.[L1].Value = Timer() - Tmr
End With
rst.Close: cn.Close
Set rst = Nothing: Set cn = Nothing
End Sub