Xin giúp mình về Tổng hợp dữ liệu từ nhiều sheet

Liên hệ QC

mongcaicity

Thành viên mới
Tham gia
9/8/10
Bài viết
12
Được thích
2
Tại sheet Tổng hợp em muốn lọc ra danh sách các Doanh nghiệp xuất khẩu từ các sheet : 1,2,3 nếu trùng tên doanh nghiệp thì chỉ nhận 1 tên vào danh sách tổng hợp và tự tổng các số liệu tương ứng : Rượu , Thuốc, ĐL của từng Doanh nghiệp đó trong từng sheet.
File chính của em có 31 sheet (Tương ứng với 31 ngày trong tháng), mình xin mạn phép để 3 sheet để nhờ các anh chị hướng dẫn mình làm theo ý muốn. (Em có file ví dụ đính kèm, mong anh chị xem và giúp đỡ em ạ)
Em xin chân thành cảm ơn!
 

File đính kèm

  • Bao cao Tong hop boc xep ngày.xlsx
    17.3 KB · Đọc: 22
·
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 5)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> ActiveWorkbook.Sheets("Tong hop").Name Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 5).Value
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                   End If
                Next
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 5) = KQ
End Sub
. Tham khảo
 

File đính kèm

  • Bao cao Tong hop boc xep ngày.xlsm
    26.4 KB · Đọc: 30
Lần chỉnh sửa cuối:
·
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 5)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> ActiveWorkbook.Sheets("Tong hop").Name Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 5).Value
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                   End If
                Next
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 4) = KQ
End Sub
. Tham khảo
Giờ em muốn cho vào sổ tổng hợp chính với 31 sheet tương ứng 31 ngày thì làm thế nào ạ
 
ActiveWorkbook.Sheets("Tong hop").Name có = "Tong hop" không bạn?
Bác cười rồi,viết thế để cho bạn ấy hiểu đấy là tên sheets.còn bình thường thì "Tong hop" là được
Bài đã được tự động gộp:

Giờ em muốn cho vào sổ tổng hợp chính với 31 sheet tương ứng 31 ngày thì làm thế nào ạ
cái đó nó duyệt hết tất cả các sheets trừ sheets "Tong hop" nha.dĩ nhiên là cấu trúc dữ liệu của các sheets phải giống nhau.Là các sheets chứa dữ liệu bắt đầu từ ô B9 .và cái sheets tổng hợp thì dữ liệu trả về sẽ là ô D4 tính cả số thứ tự.cấu trúc như nhau thì 31 sheets cũng như 3 sheeet đều chạy được nha bạn
 
Lần chỉnh sửa cuối:
Bác cười rồi,viết thế để cho bạn ấy hiểu đấy là tên sheets.còn bình thường thì "Tong hop" là được
Bài đã được tự động gộp:


cái đó nó duyệt hết tất cả các sheets trừ sheets "Tong hop" nha.dĩ nhiên là cấu trúc dữ liệu của các sheets phải giống nhau.Là các sheets chứa dữ liệu bắt đầu từ ô B9 .và cái sheets tổng hợp thì dữ liệu trả về sẽ là ô D4 tính cả số thứ tự.cấu trúc như nhau thì 31 sheets cũng như 3 sheeet đều chạy được nha bạn
Em làm nó bị ra thế này bác ạ
 

File đính kèm

  • Bao cao Tong hop boc xep ngày.xlsm
    85.2 KB · Đọc: 12
Sửa lại vầy.thêm điều kiện khi bảng trống không có dữ liệu là được
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$, Lr&
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 5)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> "Tong hop" Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 5).Value
            Lr = .Range("B" & Rows.Count).End(xlUp).Row
            
            If Lr >= 9 Then
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                   End If
                Next
             End If
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 5) = KQ
Sheets("Tong hop").Range("D4:I" & Sheets("Tong hop").Range("D" & Rows.Count).End(xlUp).Row).Borders.LineStyle = 1

End Sub
 

File đính kèm

  • Bao cao Tong hop boc xep ngày.xlsm
    81.2 KB · Đọc: 14
Lần chỉnh sửa cuối:
Sửa lại vầy.thêm điều kiện khi bảng trống không có dữ liệu là được
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$, Lr&
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 5)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> "Tong hop" Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 5).Value
            Lr = .Range("B" & Rows.Count).End(xlUp).Row
           
            If Lr >= 9 Then
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                   End If
                Next
             End If
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 4) = KQ
Sheets("Tong hop").Range("D4:I" & Sheets("Tong hop").Range("D" & Rows.Count).End(xlUp).Row).Borders.LineStyle = 1

End Sub
Thật tuyệt vời. Em cảm ơn bác nhiều lắm ạ
 

File đính kèm

  • Bao cao Tong hop boc xep ngày.xlsm
    81.2 KB · Đọc: 29
Đoán là bạn quay lại vì thiếu một cột dữ liệu đúng không?
*tại lúc đó tôi có gửi lại file mà bạn không xem :p
Dạ em xem và đang dùng rất tốt file anh gửi rồi. Nhưng do muốn cập nhật thêm dữ liệu. Nhưng em mày mò mở rộng đc vùng lấy dữ liệu rồi ạ . Hihi
 
Cũng tốt thế lại học thêm ít ít gì đó :)
 
Cũng tốt thế lại học thêm ít ít gì đó :)
Bác ơi giờ em muốn tổng hợp cả số liệu của cột "Đơn vị bốc xếp" trong sheet tổng hợp nữa thì phải làm thế nào ạ.
Em muốn tổng hợp vào chỗ tạo form sẵn kia mà làm mãi ko đc. Bác giúp em nốt lần này nữa với ạ. EM xin cảm ơn
z2284665660821_b76fb98d5d855ab33aac620561723936.jpg
 

File đính kèm

  • Bao cao boc xep thang (Mẫu).xlsm
    118.5 KB · Đọc: 12
Bác ơi giờ em muốn tổng hợp cả số liệu của cột "Đơn vị bốc xếp" trong sheet tổng hợp nữa thì phải làm thế nào ạ.
Em muốn tổng hợp vào chỗ tạo form sẵn kia mà làm mãi ko đc. Bác giúp em nốt lần này nữa với ạ. EM xin cảm ơn
View attachment 253121

Thêm một mảng nữa ghi lại danh sách đơn vị bốc xếp nữa,rồi gán vào ô A9 nhưng lưu ý ,nếu danh sách dài thì nó sẽ đè lên THU PÔNG TÔNG .chưa có dữu liệu nên tôi chưa thử bạn thử rồi tùy biến nó cho đúng
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$, Lr&, DVBX$, H&, RWS1&
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 6), BX(1 To 100, 1 To 2)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> "Tong hop" Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
            Lr = .Range("B" & Rows.Count).End(xlUp).Row
            
            If Lr >= 9 Then
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                       KQ(K, 6) = DL(i, 6)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                       KQ(RWS, 6) = KQ(RWS, 6) + DL(i, 6)
                   End If
                        DVBX = DL(i, 2)
                   If Not Dic.exists(DVBX) Then
                            H = H + 1
                       Dic.Item(DVBX) = H
                      
                       BX(H, 1) = DVBX
                       BX(H, 2) = DL(i, 6)
                
                   Else
                       RWS1 = Dic.Item(DVBX)
                       BX(RWS1, 2) = BX(RWS1, 2) + DL(i, 6)
                   End If
                Next
             End If
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 6) = KQ
Sheets("Tong hop").Range("A9").Resize(H, 2) = BX
Sheets("Tong hop").Range("D4:I" & Sheets("Tong hop").Range("D" & Rows.Count).End(xlUp).Row).Borders.LineStyle = 1
Set Dic = Nothing
End Sub
 
Thêm một mảng nữa ghi lại danh sách đơn vị bốc xếp nữa,rồi gán vào ô A9 nhưng lưu ý ,nếu danh sách dài thì nó sẽ đè lên THU PÔNG TÔNG .chưa có dữu liệu nên tôi chưa thử bạn thử rồi tùy biến nó cho đúng
Mã:
Option Explicit

Sub Tong_Hop()
Dim Ws As Worksheet
Dim i&, K&, RWS&, DN$, TH$, Lr&, DVBX$, H&, RWS1&
Dim Dic As Object
Dim DL(), KQ(1 To 50000, 1 To 6), BX(1 To 100, 1 To 2)

Set Dic = CreateObject("Scripting.dictionary")
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.Name <> "Tong hop" Then
        With Ws
            DL = .Range("B9", .Range("B" & Rows.Count).End(xlUp)).Resize(, 6).Value
            Lr = .Range("B" & Rows.Count).End(xlUp).Row
           
            If Lr >= 9 Then
                For i = 1 To UBound(DL)
                        DN = DL(i, 1)
                   If Not Dic.exists(DN) Then
                            K = K + 1
                       Dic.Item(DN) = K
                       KQ(K, 1) = K
                       KQ(K, 2) = DN
                       KQ(K, 3) = DL(i, 3)
                       KQ(K, 4) = DL(i, 4)
                       KQ(K, 5) = DL(i, 5)
                       KQ(K, 6) = DL(i, 6)
                   Else
                       RWS = Dic.Item(DN)
                       KQ(RWS, 3) = KQ(RWS, 3) + DL(i, 3)
                       KQ(RWS, 4) = KQ(RWS, 4) + DL(i, 4)
                       KQ(RWS, 5) = KQ(RWS, 5) + DL(i, 5)
                       KQ(RWS, 6) = KQ(RWS, 6) + DL(i, 6)
                   End If
                        DVBX = DL(i, 2)
                   If Not Dic.exists(DVBX) Then
                            H = H + 1
                       Dic.Item(DVBX) = H
                     
                       BX(H, 1) = DVBX
                       BX(H, 2) = DL(i, 6)
               
                   Else
                       RWS1 = Dic.Item(DVBX)
                       BX(RWS1, 2) = BX(RWS1, 2) + DL(i, 6)
                   End If
                Next
             End If
        End With
    End If
Next
Sheets("Tong hop").Range("D4").Resize(K, 6) = KQ
Sheets("Tong hop").Range("A9").Resize(H, 2) = BX
Sheets("Tong hop").Range("D4:I" & Sheets("Tong hop").Range("D" & Rows.Count).End(xlUp).Row).Borders.LineStyle = 1
Set Dic = Nothing
End Sub
Dạ em cảm ơn nhiều. Số lượng chỉ có thế thôi bác ạ
 
Web KT
Back
Top Bottom