Hướng dẫn cách xóa các dữ liệu trùng nhau trong Excel

Đánh giá bài viết

Có lẽ rất nhiều người khi sử dụng Excel đều gặp phải vấn đề về việc nhận kết quả kỳ lạ do các dữ liệu trùng lặp nhau trong một dải ô. Điều này sẽ khiến cho các hàm như VLOOKUP cho ra kết quả sai, từ đó dẫn đến tính tổng bị sai. Bài viết dưới đây sẽ hướng dẫn bạn chi tiết cách xóa các dữ liệu trùng nhau trong Excel

CÁCH TÌM DỮ LIỆU TRÙNG LẶP TRONG BẢNG TÍNH

CÁCH 1: SỬ DỤNG CÔNG THỨC

Với cách nay, bạn sẽ dùng hàm COUNTIF để xác định được rằng có 2 hay nhiều dữ liệu bị trùng lặp trong ô hay không. Nếu các dữ liệu trùng lạp đã được tìm thấy thì các hàng đó sẽ có dán nhãn “trùng”.  

CÁCH 2: SỬ DỤNG ĐỊNH DẠNG CÓ ĐIỀU KIỆN

Bạn cũng có thể thiết lập trước định dạng có điều kiện để đánh dấu trùng lặp. Bằng cách sau: Home Ribbon Tab > Conditional Formatting > Highlight Cells Rules > Duplicate Values…

Từ đấy, bạn chỉ cần nhấn nút OK khi xuất hiện hộp thoại và bất kỳ ô nào trùng lặp đều sẽ được đánh dấu bằng việc tô hết ô bằng màu đỏ. Cách này có thể dùng kiểm tra dữ liệu để xem xem có bất cứ sự trùng lặp nào hay không.

CÁCH 3: SỬ DỤNG LẬP TRÌNH VBA MACRO

Cuối cùng là phương pháp sử dụng cho VBA automator. Dưới đây là ví dụ về một macro nho nhỏ đã được tổng hợp, xác định được liệu bạn có bất kì giá trị trùng lặp nào nằm trong dải ô đã chọn hay không. Sau khi thực hiện chạy mã VBA Macro này, bạn sẽ nhìn thấy một tin nhắn cho thấy rằng bạn có bao nhiêu ô trùng lặp được tìm ra và nó sẽ hỏi rằng liệu bạn có muốn bôi vàng các ô này không?  

Sub SearchForDuplicates() Dim rng As Range Dim rngFind As Range Dim cell As Range Dim DupAddresses As String Dim SearchList As String Dim Delimiter As String’Setup Variables Set rng = Selection Delimiter = “-;;-“‘Loop through each cell in selection For Each cell In rng.Cells ‘Does cell have value? If cell.Value <> “” Then ‘Has value been searched for yet? If InStr(1, SearchList, cell.Value & Delimiter) = 0 Then SearchList = SearchList & cell.Value & DelimiterSet rngFind = rng.Find(what:=cell.Value, LookIn:=xlValues, _ lookat:=xlWhole, searchdirection:=xlNext) If Not rngFind Is Nothing Then ‘Record first instance found FirstAddress = rngFind.Address ‘Find any next instances of value Do Set rngFind = rng.FindNext(rngFind) If rngFind.Address = FirstAddress Then Exit Do DupAddresses = DupAddresses & rngFind.Address & “,” Loop End If End If End If Next cell ‘Report Results If DupAddresses <> “” Then Set rng = Range(Left(DupAddresses, Len(DupAddresses) – 1)) UserAnswer = MsgBox(rng.Count & ” duplicate values were found,” _ & ” would you like them to be highlighted in yellow?”, vbYesNo) If UserAnswer = vbYes Then rng.Interior.Color = vbYellow Else MsgBox “No duplicate cell values were found” End If End Sub

Bạn nên lưu ý rằng mã này không đánh dấu ô đầu tiên có chứa dữ liệu trùng lặp, từ ô thứ hai trở đi mới được đánh dấu.

CÁCH XÓA DỮ LIỆU TRÙNG LẶP KHỎI BẢNG TÍNH CỦA BẠN

CÁCH 1: SỬ DỤNG NÚT REMOVE DUPLICATES

Có một nút xóa dữ liệu trùng lặp nằm trên thanh Ribbon, là một tính năng tuyệt vời giúp bạn tiết kiệm được rất nhiều thời gian khi thao tác. Bạn chỉ cần di chuyển đến tab Data nằm trên thanh Ribbon, nhấp chuột vào Remove Duplicates, sau đó điền vào hộp thoại để tiến hành xóa các dữ liệu trùng lặp tùy vào từng nhu cầu của bạn.   Bạn cũng có thể thực hiện truy cập nút Remove Duplicates nằm bên trong Table Tools – Design Ribbon tab nếu như bạn đang thao tác với bảng.

CÁCH 2: SỬ DỤNG LẬP TRÌNH VBA

Mã VBA bên dưới sẽ chỉ bạn cách những hàng trùng lặp theo thứ tự trong dải ô được chọn mà không cần thay đổi dải ô thành bảng. Nó sẽ hỏi liệu bạn có muốn xóa những ô trùng lặp trước khi xóa vĩnh viễn dữ liệu.  

Sub DeleteDuplicates()Dim rng As Range Dim rngFind As Range Dim cell As Range Dim DupAddresses As String Dim SearchList As String Dim Delimiter As String ‘Setup Variables Set rng = Selection Delimiter = “-;;-” ‘Loop through each cell in selection For Each cell In rng.Columns(1).Cells ‘Does cell have value? If cell.Value <> “” Then ‘Has value been searched for yet? If InStr(1, SearchList, cell.Value & Delimiter) = 0 Then SearchList = SearchList & cell.Value & Delimiter Set rngFind = rng.Find(what:=cell.Value, LookIn:=xlValues, _ lookat:=xlWhole, searchdirection:=xlNext) If Not rngFind Is Nothing Then ‘Record first instance found FirstAddress = rngFind.Address ‘Find any next instances of value Do Set rngFind = rng.FindNext(rngFind) If rngFind.Address = FirstAddress Then Exit Do Set rngFind = rngFind.Resize(1, rng.Columns.Count) DupAddresses = DupAddresses & rngFind.Address & “,” Loop End If End If End If Next cell ‘Report Results If DupAddresses <> “” Then Set rng = Range(Left(DupAddresses, Len(DupAddresses) – 1)) rng.Select UserAnswer = MsgBox(rng.Count & ” duplicate values were found,” _ & ” would you like to delete any duplicate rows found?”, vbYesNo) If UserAnswer = vbYes Then Selection.Delete Shift:=xlUp Else MsgBox “No duplicate cell values were found” End If End Sub

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *