Chào các bạn trong diễn đàn,
Dạo này mình đang làm một dự án cần xử lý một lượng lớn dữ liệu và việc kiểm tra các bản ghi trùng lặp thủ công tốn rất nhiều thời gian và dễ sai sót. Mình đã tìm hiểu và tự viết một đoạn code VBA nhỏ để tự động hóa việc này. Nay chia sẻ lại để mọi người cùng tham khảo và có thể tùy biến cho phù hợp với nhu cầu của mình.
Vấn đề: Làm sao để nhanh chóng phát hiện và đánh dấu các dòng dữ liệu bị trùng lặp dựa trên một hoặc nhiều cột?
Giải pháp bằng VBA:
Đoạn code dưới đây sẽ quét qua một cột (hoặc nhiều cột) bạn chỉ định, sau đó đánh dấu màu vàng cho tất cả các dòng chứa dữ liệu bị trùng lặp. Dòng đầu tiên xuất hiện sẽ không bị đánh dấu.
Sub HighlightDuplicates() 'Khai báo biến Dim ws As Worksheet Dim rng As Range Dim cell As Range Dim dict As Object Set ws = ThisWorkbook.Sheets("Sheet1") 'Thay "Sheet1" bằng tên sheet của bạn Set rng = ws.Range("A2:A" & ws.Cells(Rows.Count, "A").End(xlUp).Row) 'Thay "A2:A" bằng phạm vi cột cần kiểm tra, bắt đầu từ dòng thứ 2 Set dict = CreateObject("Scripting.Dictionary") 'Duyệt qua từng ô trong phạm vi For Each cell In rng If Not dict.Exists(cell.Value) Then dict.Add cell.Value, 1 Else cell.Interior.Color = RGB(255, 255, 0) 'Đánh dấu màu vàng 'Có thể thêm code để ghi chú hoặc xóa dòng trùng lặp tại đây End If Next cell MsgBox "Đã hoàn tất kiểm tra dữ liệu trùng lặp!" End SubCách sử dụng:
- Mở VBA Editor (Alt + F11).
- Insert một Module mới.
- Paste đoạn code trên vào.
- Thay đổi tên sheet và phạm vi cột cho phù hợp với file của bạn.
- Chạy Sub
HighlightDuplicates.
Các bạn có thể mở rộng code này để kiểm tra nhiều cột cùng lúc bằng cách tạo một chuỗi kết hợp giá trị của các cột làm key cho Dictionary. Hoặc thêm chức năng ghi chú, xóa dòng trùng lặp tùy ý.
Hy vọng chia sẻ này hữu ích cho mọi người!