Thứ nhất, 4000 ngàn dòng thì nếu dùng công thức thì sẽ rất nặng máy mặc dù dùng UDF. Thứ hai, nếu dùng Macro để làm thì tốc độ lại chậm hơn nữa. Vậy nếu bạn thích thì mình sẽ làm hai cách luôn để bạn so sánh. Nhưng bạn nên đưa toàn bộ công thức đó và số liệu làm ví dụ lên thì mới làm được. Chứ bạn nói vậy thì biết gì mà làm! Thân.Trên diễn đàn có nhiều bài lọc dữ liệu duy nhất kết hợp công thức rất hay nhưng số lệu nhiều(4000 dòng) thì rất chậm . Tôi muốn có 1 công thức tự tạo mà không rành ,nhờ các bạn giúp đỡ . Cảm ơn
Sao không đúng vậy.Nhanh nhất là bạn vào advance filter, vừa nhanh lại ko phải công thức. Còn nếu ko bạn thử cái VD mình vừa thí nghiệm xem. Cũng đang nghiên cứu cái Macro, nếu có gì lỗi thì lại hỏi tiếp trên 4r để các bác ấy sửa cho.
Ah... không phải là nó phân biệt chử HOA và thường đâu, chử a trên cùng được Excel xem là TIÊU ĐỀ... (Nguyên Hương Thơm đã sơ ý chuyện này)Sao không đúng vậy.
- Nó phân biệt chữ hoa ,chữ thường
- có khoảng trống
- mấy con số ở đâu vậy
Bạn Chibi cũng có 2 chữ a A
Sub Loc()
[B1:B60000].ClearContents
[A1].CurrentRegion.AdvancedFilter Action:=2, CopyToRange:=[B1], Unique:=True
End Sub
Cảm ơn bạn NDU , nếu cột A ở 1 sheet khác ví dụ sheet2 thì sửa thế nào .
Sub Loc()
[B1:B60000].ClearContents
Sheets("Sheet2").Select
[A1].CurrentRegion.AdvancedFilter Action:=2, CopyToRange:=[iv1], Unique:=True
Range("iv1:iv60000").Select
Selection.Copy
Sheets("Sheet1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Sheet2").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
Sheets("Sheet1").Select
Range("B1").Select
End Sub
Trên diễn đàn có nhiều bài lọc dữ liệu duy nhất kết hợp công thức rất hay nhưng số lệu nhiều(4000 dòng) thì rất chậm . Tôi muốn có 1 công thức tự tạo mà không rành ,nhờ các bạn giúp đỡ .
Cảm ơn
Cụ thể như file đính kèm
Function Locduynhat(Data As Range, Rank As Long) As Variant
Dim Count As Long, Fcell As Range, Data2 As Range
Set Fcell = Data.Resize(1, 1): Count = 1
For Each cell In Data
Set Data2 = Range(Fcell, cell)
If Count <= Rank Then
If WorksheetFunction.CountIf(Data2, cell) = 1 Then
Locduynhat = cell: Count = Count + 1
Else: Locduynhat = ""
End If
End If
Next
Set Fcell = Nothing: Set Data2 = Nothing
End Function