nguyentheviet86
Thành viên hoạt động
- Tham gia
- 18/7/20
- Bài viết
- 114
- Được thích
- 7
"vẫn tổng hợp đc số liêị ạ". Chỗ này là: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
ý 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"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ả 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?muốn tổng hợp số liệu của 2 cột J, K vào Sheet tổng hợp
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