Nhờ Hỗ trợ code VB lấy dữ liệu từ 8 sheet thành báo cáo tổng (1 người xem)

Người dùng đang xem chủ đề này

doivui14000

Thành viên chính thức
Tham gia
18/12/09
Bài viết
60
Được thích
1
Hiện tại mình có file xls có 8 sheet.
Mình muốn nhờ các bạn hỗ trợ mình code VBA để làm thành 1 sheet "báo cáo" như trong file đính kèm bao gồm (tên Nhân viên ở cả 8 sheet có bỏ lọc, mã nhân viên tương ứng, số bbbg, thành tiền (bằng đơn giá* số lượng)
 
Lần chỉnh sửa cuối:
Hiện tại mình có file xls có 8 sheet.
Mình muốn nhờ các bạn hỗ trợ mình code VBA để làm thành 1 sheet "báo cáo" như trong file đính kèm bao gồm (tên Nhân viên ở cả 8 sheet có bỏ lọc, mã nhân viên tương ứng, số bbbg, thành tiền (bằng đơn giá* số lượng)
Bạn kiểm tra kết quả thế nào nhé
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query = query & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query = "select f9,f8, count(f12), sum(f1*f3) from (" & Left(query, Len(query) - 11) & ") where f12 is not null group by f9,f8"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Bạn kiểm tra kết quả thế nào nhé
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query = query & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query = "select f9,f8, count(f12), sum(f1*f3) from (" & Left(query, Len(query) - 11) & ") where f12 is not null group by f9,f8"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
báo lỗi bạn ạ. Bạn xem lại giúp mình dòng đó với cám ơn bạn
 
báo lỗi bạn ạ. Bạn xem lại giúp mình dòng đó với cám ơn bạn
Bạn thay dòng đó bằng dòng này
Mã:
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
 
Bạn thay dòng đó bằng dòng này
Mã:
cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")

Thanks bạn nhiều nha. Mà bạn ơi. có thể giúp mình thêm giá trị của 1 cột nữa với. Mình quên mất còn cái tên đơn vị nữa có gì giúp mình cái. Cám ơn bạn nhiều
 

File đính kèm

Thanks bạn nhiều nha. Mà bạn ơi. có thể giúp mình thêm giá trị của 1 cột nữa với. Mình quên mất còn cái tên đơn vị nữa có gì giúp mình cái. Cám ơn bạn nhiều
thế này thui
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query = query & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query = "select f9,f8,f6, count(f12), sum(f1*f3) from (" & Left(query, Len(query) - 11) & ") where f12 is not null group by f9,f8, f6"
    Set cn = CreateObject("ADODB.Connection")
    [FONT=Verdana]cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")[/FONT]
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
thế này thui
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query = query & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query = "select f9,f8,f6, count(f12), sum(f1*f3) from (" & Left(query, Len(query) - 11) & ") where f12 is not null group by f9,f8, f6"
    Set cn = CreateObject("ADODB.Connection")
    [FONT=Verdana]cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")[/FONT]
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
Bị lỗi dòng này quân ạ
 
Mình đã test code trc rùi và ko thấy lỗi, bạn có thể gửi lỗi nó báo như thế nào ko?
Hay file bạn làm khác file mẫu đính kèm?
Hi Quân. Nhờ bạn giúp mình chỗ này 1 chút. Hiện tại cột D Số lượng Biên bản bàn giao. Nhưng nó không bỏ trùng thì sửa thế nào bạn. Nó đang sum hết số lượng luôn nhưng ko bỏ trùng ra
[TABLE="width: 115"]
[TR]
[TD="class: xl65, width: 115"]Số lượng BBBG

[/TD]
[/TR]
[/TABLE]
[TABLE="width: 115"]
[TR]
[TD="class: xl65, width: 115"]Số lượng BBBG

[/TD]
[/TR]
[/TABLE]
 
Hi Quân. Nhờ bạn giúp mình chỗ này 1 chút. Hiện tại cột D Số lượng Biên bản bàn giao. Nhưng nó không bỏ trùng thì sửa thế nào bạn. Nó đang sum hết số lượng luôn nhưng ko bỏ trùng ra
[TABLE="width: 115"]
[TR]
[TD="class: xl65, width: 115"]Số lượng BBBG
[/TD]
[/TR]
[/TABLE]
[TABLE="width: 115"]
[TR]
[TD="class: xl65, width: 115"]Số lượng BBBG
[/TD]
[/TR]
[/TABLE]
Bạn thử thế này
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8, a.f6,b.bbg, a.price from (select f9,f8,f6, sum(f1*f3) as price from (" & query1 & ") where f12 is not null group by f9,f8, f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 is not null group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Thanks bạn nha. Nhưng mình thấy những cái nào mà không có mã biên bản bàn giao nó đếm luôn ô trống thành 1 biên bản bàn giao chứ ko bỏ trống bạn ạ
VD: Cột D nó nhận chỉ mã BBBG nhưng ở đây mình thấy nó đếm luôn những chỗ chưa bàn giao cũng thành 1 BBBNG
Bạn thử thế này
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8, a.f6,b.bbg, a.price from (select f9,f8,f6, sum(f1*f3) as price from (" & query1 & ") where f12 is not null group by f9,f8, f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 is not null group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Thanks bạn nha. Nhưng mình thấy những cái nào mà không có mã biên bản bàn giao nó đếm luôn ô trống thành 1 biên bản bàn giao chứ ko bỏ trống bạn ạ
VD: Cột D nó nhận chỉ mã BBBG nhưng ở đây mình thấy nó đếm luôn những chỗ chưa bàn giao cũng thành 1 BBBNG

Bạn thử ví dụ 1 cái cụ thể mình coi nào: sai ở chỗ tên nhân viên nào? trong code mình đã loại bỏ BBG trống mà. hic
 
Thanks bạn nha. Nhưng mình thấy những cái nào mà không có mã biên bản bàn giao nó đếm luôn ô trống thành 1 biên bản bàn giao chứ ko bỏ trống bạn ạ
VD: Cột D nó nhận chỉ mã BBBG nhưng ở đây mình thấy nó đếm luôn những chỗ chưa bàn giao cũng thành 1 BBBNG


Mà nếu được bổ sung mình thêm 1 cột email và số điện thoại với nha
thanks
 

File đính kèm

  • 44444.jpg
    44444.jpg
    78.5 KB · Đọc: 23
Bạn thử ví dụ 1 cái cụ thể mình coi nào: sai ở chỗ tên nhân viên nào? trong code mình đã loại bỏ BBG trống mà. hic
Ví dụ bạn nha:
Mã nhân viên: [TABLE="width: 200"]
[TR]
[TD="class: xl65, width: 200"]VTZ000052
Mình lấy trong file tổng hợp là 9 > nhưng mình lọc trong sheet 1 đó bỏ lọc đi chỉ còn còn 8
[TABLE="width: 64"]
[TR]
[TD="class: xl63, width: 64"]BBBG_TSCN_DOD_TEC/16/000022[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000024[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000017[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000026[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000028[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000011[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000013[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000019[/TD]
[/TR]
[/TABLE]
[/TD]
[/TR]
[/TABLE]
 

File đính kèm

  • loi.jpg
    loi.jpg
    19 KB · Đọc: 24
Ví dụ bạn nha:
Mã nhân viên: [TABLE="width: 200"]
[TR]
[TD="class: xl65, width: 200"]VTZ000052
Mình lấy trong file tổng hợp là 9 > nhưng mình lọc trong sheet 1 đó bỏ lọc đi chỉ còn còn 8
[TABLE="width: 64"]
[TR]
[TD="class: xl63, width: 64"]BBBG_TSCN_DOD_TEC/16/000022[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000024[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000017[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000026[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000028[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000011[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000013[/TD]
[/TR]
[TR]
[TD="class: xl63"]BBBG_TSCN_DOD_TEC/16/000019[/TD]
[/TR]
[/TABLE]
[/TD]
[/TR]
[/TABLE]
Bạn kt lại code
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,b.bbg, a.price from (select f9,f8,f10,f11,f6, sum(f1*f3) as price from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Thanks Quân nhiều nha.
Mà hôm qua mình có add skype bạn rồi có gì tối nc nha
thanks nhiều

Bạn kt lại code
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,b.bbg, a.price from (select f9,f8,f10,f11,f6, sum(f1*f3) as price from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Như này vậy là những người chưa có Biên bản bàn giao sẽ không hiện ra quân nhỉ. Khoai phết.
Bạn kt lại code
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,b.bbg, a.price from (select f9,f8,f10,f11,f6, sum(f1*f3) as price from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Hi quân. Mình đã test mẫu này. Nhưng thấy vẫn có sai lệch.
Thứ 1 có tên người bị lặp số người tăng và số lượng Biên bản bàn giao bị tăng lên. Mình gửi danh sách những người bị tăng

Bạn kt lại code
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select * from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f8, f6, f12 from [" & sh.Name & "$e5:p" & lr & "] union all " & Chr(10)
        End If
    Next
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,b.bbg, a.price from (select f9,f8,f10,f11,f6, sum(f1*f3) as price from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6) a "
    query = query & "inner join (select f8,f6, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6) b on b.f8 = a.f8 and b.f6 = a.f6"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 

File đính kèm

Hi quân. Mình đã test mẫu này. Nhưng thấy vẫn có sai lệch.
Thứ 1 có tên người bị lặp số người tăng và số lượng Biên bản bàn giao bị tăng lên. Mình gửi danh sách những người bị tăng
Chào bạn,
Name bị lặp là do cột "Đơn vị" - vì bạn muốn thống kê cả cột này mà., mình ko rõ BBG có bị trùng nhau theo Đơn vị hay không? nếu trùng nhau thì khi show dữ liệu bạn sẽ show kiểu gì đây?
 
Hi quân. Bạn chỉ mình thêm 1 cột lấy trường dữ liệu bỏ trùng cột R nữa với được không? Hức hức khoai qua. Huuu nhìn ko biết thêm kiểu gì
Chào bạn,
Name bị lặp là do cột "Đơn vị" - vì bạn muốn thống kê cả cột này mà., mình ko rõ BBG có bị trùng nhau theo Đơn vị hay không? nếu trùng nhau thì khi show dữ liệu bạn sẽ show kiểu gì đây?
 
Thêm giúp mình tổng hợp của cột R với Hức hức khoai tây quá
Có gì mà khoai tây nhỉ, nó chỉ thêm 1 vài từ trong code thui mà
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select f1,f3,f6,f8,f9,f10,f11,f12,f14 from [" & sh.Name & "$e5:S" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f6, f8, f12,f14 from [" & sh.Name & "$e5:S" & lr & "] union all " & Chr(10)
        End If
    Next
    
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,a.f14, b.bbg, a.price from (select f9,f8,f10,f11,f6,f14,sum(f1*f3) as price " & _
    "from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6,f14) a "
    query = query & "inner join (select f8,f6,f14, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6,f14) b on b.f8 = a.f8 and b.f6 = a.f6 and a.f14 = b.f14"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 
Đoạn code này bị lỗi Quân ạ. Nó ko thêm được cột số lượng mã công trình mà bị lỗi như hình.
Có gì giúp mình cái nha thanks

Có gì mà khoai tây nhỉ, nó chỉ thêm 1 vài từ trong code thui mà
Mã:
Sub tonghop()
    Dim sh As Worksheet, query As String, lr As Long, query1 As String, query2 As String
    For Each sh In ThisWorkbook.Sheets
        If sh.Name <> "TONGHOP" Then
            lr = sh.Range("P65000").End(3).Row
            query1 = query1 & "select f1,f3,f6,f8,f9,f10,f11,f12,f14 from [" & sh.Name & "$e5:S" & lr & "] union all " & Chr(10)
            query2 = query2 & "select distinct f6, f8, f12,f14 from [" & sh.Name & "$e5:S" & lr & "] union all " & Chr(10)
        End If
    Next
    
    query1 = Left(query1, Len(query1) - 11): query2 = Left(query2, Len(query2) - 11)
    query = "select a.f9, a.f8,a.f10,a.f11, a.f6,a.f14, b.bbg, a.price from (select f9,f8,f10,f11,f6,f14,sum(f1*f3) as price " & _
    "from (" & query1 & ") where f12 <>'' group by f9,f8, f10,f11,f6,f14) a "
    query = query & "inner join (select f8,f6,f14, count(f12) as bbg from (" & query2 & ") where f12 <> '' group by f8, f6,f14) b on b.f8 = a.f8 and b.f6 = a.f6 and a.f14 = b.f14"
    Set cn = CreateObject("ADODB.Connection")
    cn.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No;IMEX=1"";")
    Range("A2").CopyFromRecordset cn.Execute(query)
    cn.Close: Set cn = Nothing
End Sub
 

File đính kèm

  • loi.jpg
    loi.jpg
    59.5 KB · Đọc: 20

Bài viết mới nhất

Back
Top Bottom