Lọc lấy dữ liệu trùng bằng VBA

Liên hệ QC

vanhesing

Thành viên thường trực
Tham gia
12/8/10
Bài viết
223
Được thích
30
Dear Anh Chị !
Tôi có 1 vấn đề cần được sự giúp đỡ của anh chị về code lọc lấy trùng . Dạo 1 vòng diễn đàn tôi thấy đa số toàn là lọc bỏ trùng chứ ít có bài lọc lấy trùng .
trong file của tôi , tôi cũng dùng code sưu tầm trên GPE (cái mà tôi có thể hiểu nhất trong đa số code lọc ) nhưng tôi sử dụng code đó vào mục đích lọc lấy trùng 1 cách rất thủ công .khó mà trình bày hết quan điểm nên mời các Anh chị xem code trong file chắc anh Chị sẽ hiểu được mục đích của tôi muốn gì .
Tốm tắt mục đích của tôi là
1.muốn lọc lấy những dữ liệu ở cột loại lỗi bị lặp lại từ 2 lần trở lên sau đó copy qua sheet khác.
2.Cho tôi 1 code đóng khung tham khảo , vì những code mà tui lượm lặt trên GPE chỉ đóng khung khi data có từ 2 dòng trở lên còn nếu 1 dòng thì nó copy cả cái tiêu đề xuống .
Thanks và chúc sức khỏe
 

File đính kèm

  • loclaytrung.xls
    66.5 KB · Đọc: 609
Nếu bạn không chịu kiểu "Advanced Filter" thì khuyến mãi bạn Sub này xài thử, có Sort theo từng loại lỗi và ngày tháng luôn
PHP:
Public Sub LOC_GPE()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
    sArr = .Range(.[F6], .[F65000].End(xlUp)).Offset(, -5).Resize(, 22).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To UBound(sArr, 2))
For I = 1 To UBound(sArr, 1)
    Tem = sArr(I, 6)
    If Not Dic.Exists(Tem) Then
        Dic.Add Tem, 1
    Else
        Dic.Item(Tem) = Dic.Item(Tem) + 1
    End If
Next I
For I = 1 To UBound(sArr, 1)
    If sArr(I, 6) <> vbNullString Then Tem = sArr(I, 6)
    If Dic.Item(Tem) >= 2 Then
        K = K + 1
        For J = 1 To 22
            dArr(K, J) = sArr(I, J)
        Next J
    End If
Next I
With Sheet2
    .[A6:A65000].ClearContents
    .[A6:A65000].Borders.LineStyle = xlNone
    .[A6].Resize(K, UBound(sArr, 2)).Value = dArr
    .[A6].Resize(K, UBound(sArr, 2)).Borders.LineStyle = xlContinuous
    .[A6].Resize(K, UBound(sArr, 2)).Sort Key1:=.[F6], Key2:=.[G6]
End With
Set Dic = Nothing
End Sub
Bác có thể giúp em chỉnh sửa lại điều kiện được không ạ. em có tìm hiểu theo bài của bác nhưng sửa mãi không được. điều kiện em muốn sửa lại là lọc hết toàn bộ giá trị và loại bỏ giá trị trùng trong bảng tính. Ví dụ nếu nó phát sinh 2 lần thì chỉ tính lần đầu tiên. còn lần thứ 2 không ghi dữ liệu ạ. Em xin cảm ơn ạ!
 
Upvote 0
Bác có thể giúp em chỉnh sửa lại điều kiện được không ạ. em có tìm hiểu theo bài của bác nhưng sửa mãi không được. điều kiện em muốn sửa lại là lọc hết toàn bộ giá trị và loại bỏ giá trị trùng trong bảng tính. Ví dụ nếu nó phát sinh 2 lần thì chỉ tính lần đầu tiên. còn lần thứ 2 không ghi dữ liệu ạ. Em xin cảm ơn ạ!
Up file thực tế của bạn lên đây và nêu cụ thể vấn đề mình mong muốn.
 
Upvote 0
Web KT
Back
Top Bottom