Mọi người đều có nhu cầu lúc này hay lúc khác — xóa các mục trùng lặp khỏi danh sách các mục nhập văn bản. Giả sử bạn có các giá trị văn bản trong cột A của một trang tính và chúng chạy trong khoảng 500 hàng. Nếu bạn muốn xóa bất kỳ bản sao nào trong danh sách, bạn có thể đang tìm cách dễ nhất để thực hiện. Trên thực tế, có nhiều cách bạn có thể thực hiện tác vụ này trong Excel.

Sử dụng công cụ xóa trùng lặp

Có lẽ phương pháp đơn giản nhất là chọn dữ liệu mà bạn muốn xóa các bản sao và sau đó hiển thị tab Dữ liệu của ruy-băng. Bấm vào công cụ Xóa bản sao, trong nhóm Công cụ dữ liệu. Excel sẽ hiển thị hộp thoại Loại bỏ các bản sao.

Điều tuyệt vời về hộp thoại Remove Duplicates là nó liệt kê tên của từng cột trong dữ liệu của bạn. (Công cụ giả định rằng bạn có các nhãn tiêu đề trong hàng đầu tiên của dữ liệu.) Sau đó, bạn có thể đảm bảo rằng có một dấu kiểm bên cạnh mỗi cột bạn muốn kiểm tra các bản sao. Khi bạn nhấp vào nút OK, dữ liệu của bạn trong phân tích và các hàng trùng lặp sẽ bị xóa. (Một lần nữa, các bản sao được xác định dựa trên các cột được chọn trong hộp thoại Xóa bản sao.)

Sử dụng lọc dữ liệu

Một phương pháp thủ công khác là sử dụng tính năng lọc dữ liệu để xác định các giá trị duy nhất. Đảm bảo cột có nhãn ở trên cùng, sau đó chọn một ô trong cột. Hiển thị tab Dữ liệu của ruy-băng và nhấp vào Nâng cao trong nhóm Sắp xếp & Bộ lọc. Sử dụng các điều khiển trong hộp thoại kết quả để chỉ định rằng bạn muốn sao chép các giá trị duy nhất vào một vị trí khác mà bạn chỉ định.

Sử dụng công thức

Bạn cũng có thể sử dụng công thức để xác định thủ công các bản sao trong danh sách. Sắp xếp các giá trị trong cột, rồi nhập công thức sau vào ô B2:

=IF(A2=A1,"Duplicate","")

Sao chép công thức xuống tất cả các ô trong cột B có giá trị tương ứng trong cột A. Chọn tất cả các giá trị trong cột B và nhấn Ctrl + C. Sử dụng Dán Đặc biệt để chỉ dán các giá trị vào các ô đã chọn. Bây giờ bạn đã chuyển đổi các công thức thành kết quả của chúng.

Sắp xếp hai cột theo nội dung của cột B và tất cả các hàng trùng lặp của bạn sẽ nằm trong một khu vực. Xóa các hàng này và bạn có danh sách các giá trị duy nhất đã hoàn thành.

Sử dụng Macro

Các phương pháp thủ công nhanh chóng và dễ dàng, nhưng nếu bạn thường xuyên phải xóa các giá trị trùng lặp khỏi một cột, macro có thể phù hợp với phong cách của bạn hơn.

Macro sau dựa vào lọc dữ liệu, giống như phương pháp thủ công trước đó:

Sub CreateUniqueList()

Dim rData As Range     Dim rTemp As Range

Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))

rData.EntireColumn.Insert     Set rTemp = rData.Offset(0, -1)

rData.AdvancedFilter _         Action:=xlFilterCopy, _         CopyToRange:=rTemp, _         Unique:=True

rTemp.EntireColumn.Copy _         rData.EntireColumn     Application.CutCopyMode = False     rTemp.EntireColumn.Delete     Set rData = Nothing     Set rTemp = Nothing End Sub

Macro tạo một cột tạm thời, sử dụng tính năng lọc nâng cao để sao chép các giá trị duy nhất vào cột đó, sau đó xóa cột dữ liệu gốc.

Kết quả chỉ là các giá trị duy nhất trong cột A. Nếu bạn không muốn macro của mình sử dụng tính năng lọc dữ liệu của Excel, thì macro ngắn hơn nhiều sau sẽ thực hiện thủ thuật:

Sub RemoveDups()

Dim rData As Range

Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))

rData.RemoveDuplicates Columns:=Array(1), Header:=xlYes End Sub

Chìa khóa trong macro này là sử dụng phương thức RemoveDuplicates, phương thức này dựa vào một mảng có chứa số cột mà bạn muốn kiểm tra các bản sao. Macro được hiển thị ở đây chỉ hoạt động trên nội dung của cột A, nhưng bạn có thể dễ dàng sửa đổi nó để hoạt động trên dữ liệu trong nhiều cột. Tất cả những gì bạn cần làm là thay đổi rData để nó đại diện cho vùng dữ liệu lớn hơn và sau đó sửa đổi tham số cột để nó trỏ đến các cột bạn muốn kiểm tra:

rData.RemoveDuplicates Columns:=Array(1,4), Header:=xlYes

Một cách tiếp cận dựa trên macro khác là phát triển mã của riêng bạn để kiểm tra các giá trị trong tập dữ liệu, theo cách này:

Sub DelDups()

Dim rngSrc As Range     Dim NumRows As Integer     Dim ThisRow As Integer     Dim ThatRow As Integer     Dim ThisCol As Integer     Dim J As Integer, K As Integer

Application.ScreenUpdating = False     Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)



NumRows = rngSrc.Rows.Count     ThisRow = rngSrc.Row     ThatRow = ThisRow + NumRows - 1     ThisCol = rngSrc.Column

'Start wiping out duplicates     For J = ThisRow To (ThatRow - 1)

If Cells(J, ThisCol) > "" Then             For K = (J + 1) To ThatRow                 If Cells(J, ThisCol) = Cells(K, ThisCol) Then                     Cells(K, ThisCol) = ""

End If             Next K         End If     Next J

'Remove cells that are empty     For J = ThatRow To ThisRow Step -1         If Cells(J, ThisCol) = "" Then             Cells(J, ThisCol).Delete xlShiftUp         End If     Next J     Application.ScreenUpdating = True End Sub

Macro hoạt động trên một lựa chọn bạn thực hiện trước khi gọi nó. Do đó, nếu bạn cần loại bỏ các ô trùng lặp khỏi phạm vi A2: A974, chỉ cần chọn phạm vi đó và sau đó chạy macro. Khi macro hoàn tất, các ô trùng lặp sẽ bị loại bỏ, cũng như bất kỳ ô trống nào.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (12711) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: