Lọc dữ liệu trùng nhau

Liên hệ QC

mr87thang

Thành viên chính thức
Tham gia
16/4/11
Bài viết
53
Được thích
2
Xin công thức để lọc được dữ liệu từ một cột có dữ liệu trung nhau để ra được dữ liệu không trung nhau
 

File đính kèm

  • Lọc dữ liệu trùng nhau.xlsx
    9 KB · Đọc: 32
Pivot Table là được luôn
Remove Duplicates là được liền.
 
Xin công thức để lọc được dữ liệu từ một cột có dữ liệu trung nhau để ra được dữ liệu không trung nhau

Thử code sau . 0.002 giây cho 1 triệu dòng
Mã:
Sub greyrey5ry()
                                          On Error Resume Next
 Application.ScreenUpdating = False
                                          Dim i As Long, k As Long, t As Long
 Dim sArr(), dArr()
                                          Dim Dic As Object
Set Dic = CreateObject("Scripting.dictionary")
                                          sArr = Range("A1:A1000").Value ' ur5u6u6tit6u
ReDim dArr(1 To UBound(sArr), 1 To 1)
                                          For i = 1 To UBound(sArr)
If Not Dic.exists(sArr(i, 1)) Then  'hytr5ur6ur6
                                          k = k + 1
Dic(sArr(i, 1)) = k   '  yreuruit6i
                                          dArr(k, 1) = sArr(i, 1)
End If
                                          Next
Range("b1:b1000").ClearContents ' ?ey5u5u
                                          [b1].Resize(k, 1) = dArr  ' yu5ur5ur5u
Set Dic = Nothing
                                          Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Xin công thức để lọc được dữ liệu từ một cột có dữ liệu trung nhau để ra được dữ liệu không trung nhau
Copy sang rồi sử dụng cái có sẳn, bằng cách chọn dữ liệu rồi vào Data > Remove Duplicates, hộp thoại hiện ra chọn Continue with.........rồi nhấn nút Remove Duplicates, hộp thoại hiện ra nhấn OK.
Chứ không nhất thiết cái gì cũng sử dụng hàm hoặc code.
 
mình muốn dùng công thức. để tự động bạn à
Bài đã được tự động gộp:

Copy sang rồi sử dụng cái có sẳn, bằng cách chọn dữ liệu rồi vào Data > Remove Duplicates, hộp thoại hiện ra chọn Continue with.........rồi nhấn nút Remove Duplicates, hộp thoại hiện ra nhấn OK.
Chứ không nhất thiết cái gì cũng sử dụng hàm hoặc code.
mình muốn dùng công thức, để sử dụng kết quả tự động cho tiếp công việc nữa
 
Pivot Table là được luôn
Remove Duplicates là được liền.
Remove Duplicate là tốt nhất rồi.
Nhưng Pivot Table thì hơi yếu. Power Pivot mới là xịn.

mình muốn dùng công thức. để tự động bạn à
...
mình muốn dùng công thức, để sử dụng kết quả tự động cho tiếp công việc nữa
Conslidate dữ liệu mà dùng công thức là quả đùa với lửa.
 
Muốn tự động thì phải dùng VBA.
Nếu dữ liệu lớn mà sử dụng hàm chắc có ngày sẽ bực mình vì nó.

Code này dùng được không Chú.

Mã:
Sub LOC()
    Range("DS").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Range("DS").Copy
    Range("B1").Select
    ActiveSheet.Paste
    Columns("B:B").EntireColumn.AutoFit
    Application.CutCopyMode = False
    ActiveSheet.ShowAllData
    Range("B1").Select
End Sub
 
Code này dùng được không Chú.

Mã:
Sub LOC()
    Range("DS").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Range("DS").Copy
    Range("B1").Select
    ActiveSheet.Paste
    Columns("B:B").EntireColumn.AutoFit
    Application.CutCopyMode = False
    ActiveSheet.ShowAllData
    Range("B1").Select
End Sub
Code bài 12 có thể sửa lại thế này:
Mã:
Sub LOC()
    Range("DS").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    Range("DS").Copy Range("B1")
    Columns("B:B").EntireColumn.AutoFit
    ActiveSheet.ShowAllData
    Range("B1").Select
End Sub

Tuy nhiên Advanced Filter có thể lọc duy nhất sang ngay chỗ khác luôn nên code chỉ ngắn gọn thế này:
Mã:
Sub LocDuyNhat()
    Range("DS").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("B1"), Unique:=True
    Range("B1").Select
End Sub
 
Lần chỉnh sửa cuối:
Góp vui ADO, thử với 1 triệu dòng, tốc độ vẫn cực nhanh
Mã:
Sub Unique()
t = Timer
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0;HDR=No"";Data Source=" & ThisWorkbook.FullName
        Sheet1.Range("B1").CopyFromRecordset .Execute("Select distinct F1 from [Sheet1$A:A]")
    End With
[c1] = Timer - t
End Sub
 
Lần chỉnh sửa cuối:

File đính kèm

  • GPE.xlsx
    6 KB · Đọc: 13
Xin chào bạn @saobekhonglac : qua kết quả trên, bạn có thể giúp mình vừa lọc dữ liệu trùng và kèm thêm điều kiện (kèm hình và file đính kèm)
p/s: công thức của bạn gọn, không cần cột phụ
Hiện được kết quả như cột C chứ?
Công thức ở C2:
Mã:
=IFERROR(INDEX($A$1:$A$27,MATCH(,INDEX(COUNTIF(C$1:C1,$A$1:$A$27)+($B$1:$B$27="-"),),)),"")
 
Hiện được kết quả như cột C chứ?
Công thức ở C2:
Mã:
=IFERROR(INDEX($A$1:$A$27,MATCH(,INDEX(COUNTIF(C$1:C1,$A$1:$A$27)+($B$1:$B$27="-"),),)),"")
Chào bạn, nhờ bạn hỗ trợ giúp mình (đính kèm hình, file), do mình sử dụng Libre office nên không thể sử dụng VBA.
1608886106042.png
 

File đính kèm

  • GPE.xlsx
    12.5 KB · Đọc: 11
Web KT
Back
Top Bottom