Dùng cột phụ có được hay khôngChào các Anh/Chị trên diễn đàn.
Nhờ Anh/Chị trên diễn đàn hỗ trợ hướng dẫn tôi cách lọc và loại bỏ dữ liệu trùng chỉ giữ lại dữ liệu thỏa điều kiện.
Đính kèm theo là file mẫu mà tôi đang muốn thực hiện.
Rất mong sớm nhận được hỗ trợ.
Cảm ơn Anh/Chị nhiều.
Nếu dữ liệu nhiều dòng, thì thử dùng code VBA này xem sao.Chào các Anh/Chị trên diễn đàn.
Nhờ Anh/Chị trên diễn đàn hỗ trợ hướng dẫn tôi cách lọc và loại bỏ dữ liệu trùng chỉ giữ lại dữ liệu thỏa điều kiện.
Đính kèm theo là file mẫu mà tôi đang muốn thực hiện.
Rất mong sớm nhận được hỗ trợ.
Cảm ơn Anh/Chị nhiều.
Sub Loc()
Dim I&, J&, R&, C&, k&, t&, Lr
Dim Arr(), KQ(), DK
Dim dic As Object
With Sheet1
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
Arr = .Range("A2:D" & Lr).Value
R = UBound(Arr, 1): C = UBound(Arr, 2)
ReDim KQ(1 To R, 1 To C)
Set dic = CreateObject("Scripting.Dictionary")
For I = 1 To R
DK = Arr(I, 1) & "|" & Arr(I, 2) & "|" & Arr(I, 3)
If Not dic.exists(DK) Then
t = t + 1
dic.Add (DK), t
For J = 1 To C
KQ(t, J) = Arr(I, J)
Next J
Else
k = dic.Item(DK)
If Arr(I, 4) > KQ(k, 4) Then KQ(k, 4) = Arr(I, 4)
End If
Next I
If t Then
.[K2].Resize(t, C) = KQ
.[K2].Resize(t, C).Borders.LineStyle = 1
End If
End With
Set dic = Nothing
End Sub
Bài này key chỉ cần tên là ổn (dữ liệu chuẩn chắc phải có Mã HS).Nếu dữ liệu nhiều dòng, thì thử dùng code VBA này xem sao.
Hi vọng đúng ý.Mã:Sub Loc() Dim I&, J&, R&, C&, k&, t&, Lr Dim Arr(), KQ(), DK Dim dic As Object With Sheet1 Lr = .Cells(Rows.Count, 1).End(xlUp).Row Arr = .Range("A2:D" & Lr).Value R = UBound(Arr, 1): C = UBound(Arr, 2) ReDim KQ(1 To R, 1 To C) Set dic = CreateObject("Scripting.Dictionary") For I = 1 To R DK = Arr(I, 1) & "|" & Arr(I, 2) & "|" & Arr(I, 3) If Not dic.exists(DK) Then t = t + 1 dic.Add (DK), t For J = 1 To C KQ(t, J) = Arr(I, J) Next J Else k = dic.Item(DK) If Arr(I, 4) > KQ(k, 4) Then KQ(k, 4) = Arr(I, 4) End If Next I If t Then .[K2].Resize(t, C) = KQ .[K2].Resize(t, C).Borders.LineStyle = 1 End If End With Set dic = Nothing End Sub
Dạ vâng, nhờ bạn giúp gửi lên đây video quay lại cách làm bằng Power Query của Office 2016. Cảm ơn nhiều ạ.Bài này key chỉ cần tên là ổn (dữ liệu chuẩn chắc phải có Mã HS).
Nếu chủ thớt dùng Office 2016 trở lên, dùng Power Query (tool có sẵn của Excel) sẽ rất nhanh, không cần đến VBA. Nếu bạn cần tôi sẽ quay lại cách làm.
Kết quả code của anh @HUONGHCKT tôi để ở F2, Kết quả dùng Power Query để ở K2.
Dùng lọc nâng cao, công thức là:Chào các Anh/Chị trên diễn đàn.
Nhờ Anh/Chị trên diễn đàn hỗ trợ hướng dẫn tôi cách lọc và loại bỏ dữ liệu trùng chỉ giữ lại dữ liệu thỏa điều kiện.
Tôi gửi Video, bạn tham khảo. Việc dùng Power Query thuận lợi và nhanh chóng, ví dụ bạn cần thống kê thêm điểm thấp nhất, số lần thi, điểm trung bình các lần thi.... bạn thử xem sao nhé.Dạ vâng, nhờ bạn giúp gửi lên đây video quay lại cách làm bằng Power Query của Office 2016. Cảm ơn nhiều ạ.
Rất hữu ích. Cảm ơn bạn rất nhiều.Tôi gửi Video, bạn tham khảo. Việc dùng Power Query thuận lợi và nhanh chóng, ví dụ bạn cần thống kê thêm điểm thấp nhất, số lần thi, điểm trung bình các lần thi.... bạn thử xem sao nhé.
Nhiều tim quá, không chịu nổiRất hữu ích. Cảm ơn bạn rất nhiều.![]()
Thêm cách cho bạn tham khảo nhé:Chào các Anh/Chị trên diễn đàn.
Nhờ Anh/Chị trên diễn đàn hỗ trợ hướng dẫn tôi cách lọc và loại bỏ dữ liệu trùng chỉ giữ lại dữ liệu thỏa điều kiện.
Đính kèm theo là file mẫu mà tôi đang muốn thực hiện.
Rất mong sớm nhận được hỗ trợ.
Cảm ơn Anh/Chị nhiều.
Sub Gop_HLMT()
With CreateObject("ADODB.Recordset")
.Open "SELECT F1,F2,F3,Max(F4) FROM [Sheet1$A3:D] Group By F1,F2,F3", "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=No"""
Sheet1.Range("P3").CopyFromRecordset .DataSource
End With
End Sub