Xóa các cột trùng lặp (Microsoft Excel)
Dror có một trang tính chứa khá nhiều dữ liệu. Có thể dữ liệu trong một cột sẽ giống hoàn toàn với dữ liệu trong một cột khác, vì vậy anh ấy tự hỏi liệu có cách nào dễ dàng để xóa bất kỳ cột trùng lặp nào trong trang tính không.
Bước đầu tiên, tất nhiên, là tìm hiểu xem hai cột có giống nhau hay không. Điều này có thể được xác định khá dễ dàng với một công thức mảng như sau:
=AND(A1:A100=B1:B100)
(Hãy nhớ rằng công thức mảng được nhập bằng cách sử dụng Shift + Ctrl + Enter.)
Công thức so sánh tất cả các giá trị trong 100 hàng đầu tiên của cột A và B. Nếu chúng đều giống nhau, thì công thức trả về TRUE. Nếu bất kỳ ô nào không khớp, thì công thức trả về FALSE. Nếu kết quả là TRUE thì bạn có thể xóa một trong các cột vì chúng giống nhau.
Nếu bạn muốn thứ gì đó tự động hơn một chút, nghĩa là cột trùng lặp sẽ bị xóa, thì bạn sẽ cần sử dụng macro. Các bước sau qua tất cả các cột trong trang tính và bắt đầu với cột ngoài cùng bên phải, so sánh tất cả các cột. Nếu bất kỳ cột nào giống nhau — bất kể thứ tự của chúng trong trang tính — thì macro sẽ hỏi bạn có muốn xóa cột trùng lặp hay không.
Sub DeleteDuplicateColumns() Dim rngData As Range Dim arr1, arr2 Dim i As Integer, j As Integer, n As Integer On Error Resume Next Set rngData = ActiveSheet.UsedRange If rngData Is Nothing Then Exit Sub n = rngData.Columns.Count For i = n To 2 Step -1 For j = i - 1 To 1 Step -1 If WorksheetFunction.CountA(rngData.Columns(i)) <> 0 And _ WorksheetFunction.CountA(rngData.Columns(j)) <> 0 Then arr1 = rngData.Columns(i) arr2 = rngData.Columns(j) If AreEqualArr(arr1, arr2) Then With rngData.Columns(j) 'mark column to be deleted .Copy If MsgBox("Delete marked column?", vbYesNo) _ = vbYes Then rngData.Columns(j).Delete Else 'remove mark Application.CutCopyMode = False End If End With End If End If Next j Next i End Sub
Function AreEqualArr(arr1, arr2) As Boolean Dim i As Long, n As Long AreEqualArr = False For n = LBound(arr1) To UBound(arr1) If arr1(n, 1) <> arr2(n, 1) Then Exit Function End If Next n AreEqualArr = True End Function
_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 (5674) á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: