Việc trùng lặp dữ liệu trong bảng tính Excel là điều không hiếm và thậm chí nó diễn ra hàng ngày tại mọi cơ quan, điều này sẽ dẫn đến việc làm cho file Excel chứa nhiều dung lượng hơn, nhận kết quả không chính xác vì bị trùng lặp dữ liệu trong dải ô và hệ quả gây ra là các hàm sẽ ra kết quả sai, tính tổng sai. Trong bài viết này Gitiho.com sẽ chỉ ra cho bạn 3 cách để rà soát lại các dữ liệu bị trùng lặp và cách thức để loại bỏ chúng ra khỏi bảng tính.
Để sử dụng cách này, ta vào Conditional Formatting thuộc tab Home rồi chọn Highlight Cells Rules > Duplicate Values…
Tới đây bạn chỉ cần nhấn OK trong hộp thoại Duplicates Value thì tất cả những giá trị đang bị trùng nhau trong bảng tính Excel đều sẽ bị tô đỏ. Ngay cả việc kéo xuống từng dòng để kiểm tra các ô đỏ bạn cũng không cần phải làm, thay vào đó chúng ta sẽ lọc dữ liệu, từ đó sẽ lọc ra những ô màu đỏ bạn cần.
Hàm COUNTIF sẽ giúp chúng ta xác định xem có bao nhiêu ô hiện đang bị trùng lặp trong bảng tính bằng cách dán nhãn "DUP" (tức Duplicate = Trùng) lên những dữ liệu bị lặp lại. Tất nhiên bạn cũng có thể thay đổi nhãn dán này bằng những từ mà bạn muốn
Xem thêm: Cách dùng hàm VLOOKUP lọc trùng dữ liệu trong Excel nhanh chóng
Đoạn mã Macro dưới đây sẽ giúp bạn xác đinh được số lượng giá trị đang bị trùng lặp trong bảng tính của chúng ta, cùng với đó những ô chứa dữ liệu trùng lặp sẽ được bôi vàng. Hãy nhớ lưu lại đoạn mã này vào Macro Workbook để chúng ta sử dụng vào lần tới nhé!
Đoạn mã này sẽ không đánh dấu ô đầu tiên có dữ liệu trùng lặp mà sẽ tính từ ô thứ hai trở đi, vậy nên bạn không cần phải lo đến việc bị đánh dấu nhầm
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 & 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
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
Công cụ này chúng ta sẽ chẳng cần phải tìm kiếm đâu xa khi ngay ở trên thanh công cụ của Excel, ở phần tab Data là ta đã nhìn thấy công cụ Remove Duplicates. Sau khi bấm vào hộp thoại Remove Duplicates thì chúng ta điền vào đó dữ liệu mà đang bị trùng lăp để loại bỏ chúng
Ta cũng có thể truy cập công cụ Remove Duplicate nằm trong Table Tools nếu như bạn đang làm việc trong bảng
Chúng ta đã biết rằng VBA là một ngôn ngữ giúp cho việc tự động hoá trong khuôn khổ của Excel. Với đoạn code VBA dưới đây thì nó sẽ chỉ ra cho chúng ta các hàng đang bị lặp lại theo thứ tự từ trên xuống mà không cần phải thay đổi dải ô
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
Qua bài viết này, Gitiho.com mong rằng bạn đọc sẽ không còn lúng túng trong việc phải tra cứu và xóa đi những dữ liệu bị trùng khiến cho bảng tính của chúng ta gặp trung trặc trong quá trình làm việc nữa.
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!