Viết code tổng hợp dữ liệu của nhiều Sheet

Liên hệ QC

nguyentheviet86

Thành viên hoạt động
Tham gia
18/7/20
Bài viết
114
Được thích
7
Thân gửi anh chị !
Nhờ anh chị giúp đỡ, hiện tại em có sheet nhỏ, muốn tổng hợp số liệu của 2 cột J, K vào Sheet tổng hợp, khi e thêm nhiều sheet khác thì vẫn tổng hợp đc số liêị ạ
Dữ liệu cần lấy theo mã code và theo mã ID
Em cảm ơn anh chị !


1608265449958.png
 

File đính kèm

  • Attendance - 2020.rar
    4.4 MB · Đọc: 22
Thân gửi anh chị !
Nhờ anh chị giúp đỡ, hiện tại em có sheet nhỏ, muốn tổng hợp số liệu của 2 cột J, K vào Sheet tổng hợp, khi e thêm nhiều sheet khác thì vẫn tổng hợp đc số liêị
Dữ liệu cần lấy theo mã code và theo mã ID
Em cảm ơn anh chị !


View attachment 251461
"vẫn tổng hợp đc số liêị ạ". Chỗ này là:
1. thông báo: vẫn tổng hợp, đồng chí Số Liệi ạ
2. Vẫn tổng hợp đang có số liệu ạ!
 
Upvote 0
"vẫn tổng hợp đc số liêị ạ". Chỗ này là:
1. thông báo: vẫn tổng hợp, đồng chí Số Liệi ạ
2. Vẫn tổng hợp đang có số liệu ạ!
ý tác giả là ngoài số liệu các sheets có sẵn thì sau này thêm sheets mới thì vẫn tính thêm số liệu ở sheets mới thêm đó vào sheets tổng hợp
Cái mà tôi muốn hỏi là
muốn tổng hợp số liệu của 2 cột J, K vào Sheet tổng hợp
Tác giả muốn tổng hợp hai cột nhưng bên sheets tổng hợp thì đối chiếu theo ID và mã code thì chỉ có một cột để gán kết quả vậy nếu gán thì tác giả muốn gán như thế nào?
1608362726619.png
 
Lần chỉnh sửa cuối:
Upvote 0
Mãi không thấy tác giả bài viết trả lời nên tôi viết code đại khái như này và chỉ lấy kết quả một cột bạn có thể xem code và tùy biết theo kết quả bạn muốn
Mã:
Option Explicit

Sub Thong_Ke()
Dim Ws As Worksheet
Dim i&, R&, C%, ID$, K&, CODE$, Rws&, Col&
Dim Dic As Object
Dim DL(), KQ()
Set Dic = CreateObject("Scripting.dictionary")
Application.ScreenUpdating = False
'-------------------------------------------------------------------------------------------------------
With Sheet1
    DL = .Range("B3", .Range("B" & Rows.Count).End(xlUp)).Resize(, 19).Value
    R = UBound(DL)
    ReDim KQ(3 To R, 1 To 18)
            For i = 3 To UBound(DL)
                   ID = Trim(DL(i, 1))
               If Not Dic.exists(ID) Then Dic.Add ID, i
            Next
            For i = 2 To UBound(DL, 2)
                    CODE = Trim(DL(1, i))
               If Not Dic.exists(CODE) Then Dic.Add CODE, i - 1
            Next
End With
For Each Ws In ActiveWorkbook.Worksheets
    If Ws.CodeName <> "Sheet1" Then
        With Ws
                C = .Range("XFD4").End(xlToLeft).Column - 2
                DL = .Range("C5", .Range("C" & Rows.Count).End(xlUp)).Resize(, C).Value
                 For i = 1 To UBound(DL)
                                ID = Trim(DL(i, 1))
                                CODE = Trim(DL(i, 6))
                        If Dic.exists(ID) Then
                                If Dic.exists(CODE) Then
                                    Col = Dic.Item(CODE)
                                    K = Dic.Item(ID)
                                    KQ(K, Col) = KQ(K, Col) + DL(i, 8)
                                End If
                        End If
                Next
        End With
    End If
Next
Set Dic = Nothing
Sheet1.Range("C5").Resize(R - 2, 18).ClearContents
Sheet1.Range("C5").Resize(R - 2, 18) = KQ
Sheet1.Range("C5").Resize(R - 2, 18).Borders.LineStyle = 1
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom