Lọc tên và tổng số lượng cho mỗi tên

Liên hệ QC

dangphongpro2010

Thành viên mới
Tham gia
19/12/13
Bài viết
33
Được thích
4
Giới tính
Nam
Xin các anh chị giúp em vấn đề này với..Em muốn lấy tên (nếu có trùng tên thì lấy 1 tên duy nhất) nhưng cột số lượng thì tính tổng. Do trang của em đến hơn 50 ngàn dòng nên việc sử dụng công thức trên excel chạy rất chậm. mong các Anh Chị giúp đỡ em. Em xin cảm ơn nhiều nhiều. Em có đính kèm file. mọi người xem và giúp em nhe.
 

File đính kèm

Xin các anh chị giúp em vấn đề này với..Em muốn lấy tên (nếu có trùng tên thì lấy 1 tên duy nhất) nhưng cột số lượng thì tính tổng. Do trang của em đến hơn 50 ngàn dòng nên việc sử dụng công thức trên excel chạy rất chậm. mong các Anh Chị giúp đỡ em. Em xin cảm ơn nhiều nhiều. Em có đính kèm file. mọi người xem và giúp em nhe.
Mượn trên diễn dàn chỉnh sữa lại bạn xem thử nha
Mã:
Private Sub CommandButton23_Click()
Dim I As Long, K As Long, Darr()
Dim Sarr(), Temp(), J As Long
Sarr = Range("A2", [A65536].End(3)).Resize(, 2).Value
ReDim Darr(1 To UBound(Sarr), 1 To 2)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(Sarr)
        If Not .exists(Sarr(I, 1)) Then
            K = K + 1
            .Add Sarr(I, 1), K
            For J = 1 To UBound(Sarr, 2)
               Darr(K, J) = Sarr(I, J)
            Next
            Darr(K, 2) = Sarr(I, 2)
        Else
            Darr(.Item(Sarr(I, 1)), 2) = _
            Darr(.Item(Sarr(I, 1)), 2) + Sarr(I, 2)
        End If
    Next
End With
[L2].Resize(K, 2) = Darr
End Sub
 
Mình muốn lấy ra 1 sheet mới từ sheet tổng để làm báo cáo luôn đó, nhưng vẫn chung 1 file, mỗi lần cần số liệu báo cáo là mình cho nó ra 1 sheet mới. Vì số lượng thay đổi liên tục.Mong bạn giúp đỡ.
 
Mình muốn lấy ra 1 sheet mới từ sheet tổng để làm báo cáo luôn đó, nhưng vẫn chung 1 file, mỗi lần cần số liệu báo cáo là mình cho nó ra 1 sheet mới. Vì số lượng thay đổi liên tục.Mong bạn giúp đỡ.
Vậy đúng ý bạn không
Mã:
Private Sub CommandButton23_Click()
Dim I As Long, K As Long, Darr()
Dim Sarr(), Temp(), J As Long
Sarr = Sheet1.Range("A2", Sheet1.[A65536].End(3)).Resize(, 2).Value
ReDim Darr(1 To UBound(Sarr), 1 To 2)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(Sarr)
        If Not .exists(Sarr(I, 1)) Then
            K = K + 1
            .Add Sarr(I, 1), K
            For J = 1 To UBound(Sarr, 2)
               Darr(K, J) = Sarr(I, J)
            Next
            Darr(K, 2) = Sarr(I, 2)
        Else
            Darr(.Item(Sarr(I, 1)), 2) = _
            Darr(.Item(Sarr(I, 1)), 2) + Sarr(I, 2)
        End If
    Next
End With
Sheet2.[A2].Resize(K, 2) = Darr
End Sub
 
Mượn trên diễn dàn chỉnh sữa lại bạn xem thử nha
Mã:
Private Sub CommandButton23_Click()
Dim I As Long, K As Long, Darr()
Dim Sarr(), Temp(), J As Long
Sarr = Range("A2", [A65536].End(3)).Resize(, 2).Value
ReDim Darr(1 To UBound(Sarr), 1 To 2)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(Sarr)
        If Not .exists(Sarr(I, 1)) Then
            K = K + 1
            .Add Sarr(I, 1), K
            For J = 1 To UBound(Sarr, 2)
               Darr(K, J) = Sarr(I, J)
            Next
            Darr(K, 2) = Sarr(I, 2)
        Else
            Darr(.Item(Sarr(I, 1)), 2) = _
            Darr(.Item(Sarr(I, 1)), 2) + Sarr(I, 2)
        End If
    Next
End With
[L2].Resize(K, 2) = Darr
End Sub
Cảm ơn bạn nhiều nhe.. đúng ý mình cần rồi..hihi..mặc dù ko hiểu cái code, nếu mình cần thêm cột tương tự cột số lượng và tăng dòng thì mình thay đổi chỗ nào ( cái chữ End(3) mình ko hiểu) . hic
 
Cảm ơn bạn nhiều nhe.. đúng ý mình cần rồi..hihi..mặc dù ko hiểu cái code, nếu mình cần thêm cột tương tự cột số lượng và tăng dòng thì mình thay đổi chỗ nào ( cái chữ End(3) mình ko hiểu) . hic
end(3) viết tắt của End(xlUp) lên mục tìm kiếm gõ sẽ thấy
Col là số lượng cột
Mã:
Private Sub CommandButton21_Click()
Dim I As Long, K As Long, Darr()
Dim Sarr(), Temp(), Col As Long, J As Long
Col = 2
Sarr = Sheet1.Range("A2", Sheet1.[A65536].End(xlUp)).Resize(, Col).Value
ReDim Darr(1 To UBound(Sarr), 1 To Col)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(Sarr)
        If Not .exists(Sarr(I, 1)) Then
            K = K + 1
            .Add Sarr(I, 1), K
            For J = 1 To Col - 1
               Darr(K, J) = Sarr(I, J)
            Next
            Darr(K, Col) = Sarr(I, Col)
        Else
            Darr(.Item(Sarr(I, 1)), Col) = _
            Darr(.Item(Sarr(I, 1)), Col) + Sarr(I, Col)
        End If
    Next
End With
Sheet2.[A2].Resize(K, Col) = Darr
End Sub
 
end(3) viết tắt của End(xlUp) lên mục tìm kiếm gõ sẽ thấy
Col là số lượng cột
Mã:
Private Sub CommandButton21_Click()
Dim I As Long, K As Long, Darr()
Dim Sarr(), Temp(), Col As Long, J As Long
Col = 2
Sarr = Sheet1.Range("A2", Sheet1.[A65536].End(xlUp)).Resize(, Col).Value
ReDim Darr(1 To UBound(Sarr), 1 To Col)
With CreateObject("Scripting.Dictionary")
    For I = 1 To UBound(Sarr)
        If Not .exists(Sarr(I, 1)) Then
            K = K + 1
            .Add Sarr(I, 1), K
            For J = 1 To Col - 1
               Darr(K, J) = Sarr(I, J)
            Next
            Darr(K, Col) = Sarr(I, Col)
        Else
            Darr(.Item(Sarr(I, 1)), Col) = _
            Darr(.Item(Sarr(I, 1)), Col) + Sarr(I, Col)
        End If
    Next
End With
Sheet2.[A2].Resize(K, Col) = Darr
End Sub
Cảm ơn bạn nhiều lắm, cho mình hỏi thêm 1 câu do sự sai sót của mình nữa nhe, giữa cột tên và cột số lượng của mình cách nhau tới 5 cột, tức là cột A là tên, cột B,C,D,E,F là cột đơn vị, miêu tả...rồi mới đến cột H là cột số lượng, vậy mình phải chỉnh lại thế nào ? Cảm ơn bạn nhiều nha.
 
Cảm ơn bạn nhiều lắm, cho mình hỏi thêm 1 câu do sự sai sót của mình nữa nhe, giữa cột tên và cột số lượng của mình cách nhau tới 5 cột, tức là cột A là tên, cột B,C,D,E,F là cột đơn vị, miêu tả...rồi mới đến cột H là cột số lượng, vậy mình phải chỉnh lại thế nào ? Cảm ơn bạn nhiều nha.
Bạn thử insert cột và sữa Code Col=8 xem sau
 
Web KT

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

Back
Top Bottom