Tổng hợp dữ liệu theo điều kiện? (1 người xem)

Liên hệ QC

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

Miền Cát Trắng

Thành viên hoạt động
Tham gia
18/5/13
Bài viết
171
Được thích
37
Xin chào tất cả mọi người,
Em muốn tổng hợp dữ liệu từ bảng A sang bảng B trong file đính kèm.
Rất mong được sự giúp đỡ của mọi người ạ.
Em xin cảm ơn nhiều.
 

File đính kèm

Bạn biết xài Pivot Table chứ...........5 Giây là ra chứ mấy.........
Còn thích code thì thử đoạn này
Mã:
Sub THop()
    Dim Dic As Object
    Dim i As Long, j As Long, k As Long
    Dim Tmp As String
    Dim Arr, Res
    Sheet1.Range("H7").Resize(65000, 4).ClearContents
    Arr = Range(Sheet1.[b7], Sheet1.[b65000].End(3)).Resize(, 4)
    ReDim Res(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        For i = 1 To UBound(Arr, 1)
            Tmp = Arr(i, 1) & "#" & Arr(i, 2)
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
                For j = 1 To UBound(Arr, 2)
                    Res(k, j) = Arr(i, j)
                Next
            Else
                Res(.Item(Tmp), 3) = Res(.Item(Tmp), 3) + Arr(i, 3)
                Res(.Item(Tmp), 4) = Res(.Item(Tmp), 4) + Arr(i, 4)
            End If
        Next
    End With
    Sheet1.Range("H7").Resize(k, UBound(Arr, 2)) = Res
End Sub

Cảm ơn anh đã trợ giúp ạ.
Nếu có trường hợp dùng công thức thì mong anh chỉ thêm ạ.
 
Bạn biết xài Pivot Table chứ...........5 Giây là ra chứ mấy.........
Còn thích code thì thử đoạn này
Mã:
Sub THop()
    Dim Dic As Object
    Dim i As Long, j As Long, k As Long
    Dim Tmp As String
    Dim Arr, Res
    Sheet1.Range("H7").Resize(65000, 4).ClearContents
    Arr = Range(Sheet1.[b7], Sheet1.[b65000].End(3)).Resize(, 4)
    ReDim Res(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
    Set Dic = CreateObject("Scripting.Dictionary")
    With Dic
        For i = 1 To UBound(Arr, 1)
            Tmp = Arr(i, 1) & "#" & Arr(i, 2)
            If Not .Exists(Tmp) Then
                k = k + 1
                .Add Tmp, k
                For j = 1 To UBound(Arr, 2)
                    Res(k, j) = Arr(i, j)
                Next
            Else
                Res(.Item(Tmp), 3) = Res(.Item(Tmp), 3) + Arr(i, 3)
                Res(.Item(Tmp), 4) = Res(.Item(Tmp), 4) + Arr(i, 4)
            End If
        Next
    End With
    Sheet1.Range("H7").Resize(k, UBound(Arr, 2)) = Res
End Sub
Anh ơi anh có thể giải thích giúp em từng dòng code được không ạ, nhất là mấy con số ấy ạ.
Em cảm ơn nhiều.
 
Bảo tôi giải thích code là cực hình..........vì tôi mới bước vào con đường đau khổ nên chỉ biết sơ sơ thui......, hãy nhờ bác "Chim Hồng" ở #3 ấy............bác ấy giải thích cho...........--=0--=0--=0--=0--=0

bắt thằng thợ trộn hồ giải thích công trình của kiến trúc sư ? bạn ác vừa thôi chứ !
 
Nhờ các bạn giúp đỡ vẫn đề trong file gửi kèm với, xin cảm ơn
 

File đính kèm

Web KT

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

Back
Top Bottom