Dubbele Kolommen verwijderen van

Dror heeft een werkblad dat nogal wat data bevat. Het is mogelijk dat de gegevens in één kolom dezelfde als de gegevens in een andere kolom, dus hij af of er een gemakkelijke manier om eventuele dubbele kolommen in het werkblad te verwijderen.

De eerste stap is natuurlijk om erachter te komen of twee kolommen gelijk zijn of niet. Dit kan vrij gemakkelijk worden bepaald met een matrix formule zoals de volgende:

= EN (A1: A100 = B1: B100)

(Vergeet niet dat een matrixformule met behulp van Shift + Ctrl + Enter is ingevoerd.) De formule vergelijkt alle waarden in de eerste 100 rijen van de kolommen A en B. Als ze zijn allemaal hetzelfde, dan is de formule retourneert TRUE. Als een van de cellen niet overeenkomen, dan geeft de formule ONWAAR. Als het resultaat WAAR kan je dan verwijdert één van de kolommen, omdat ze hetzelfde zijn.

Als je iets dat een beetje meer automatisch, wat betekent dat de kolom duplicaat wordt verwijderd wilt, dan moet u een macro gebruiken. De volgende stappen door alle kolommen in het werkblad en, beginnend met de meest rechtse kolom vergelijkt alle kolommen. Indien enige zijn hetzelfde-ongeacht hun orde in het werkblad-vervolgens de macro vraagt ​​of u wilt dat de dubbele kolom verwijderd.

Sub DeleteDuplicateColumns ()
Dim rngData als Waaier
Dim arr1, arr2
Dim i As Integer, j als Geheel, n As Integer

On Error Resume Next
Stel rngData = ActiveSheet.UsedRange
Als rngData dan niets is Exit Sub

n = rngData.Columns.Count

Voor i = n Om 2 Step -1
Voor j = i - 1 tot 1 Step -1
Als WorksheetFunction.CountA (rngData.Columns (i)) <> 0 en _
WorksheetFunction.CountA (rngData.Columns (j)) <> 0 Then
arr1 = rngData.Columns (i)
arr2 = rngData.Columns (j)
Als AreEqualArr (arr1, arr2) Dan
Met rngData.Columns (j)
'Mark kolom moet worden verwijderd
.Copy
Als MsgBox ("gemarkeerde Kolom verwijderen?", VbYesNo) _
= VbYes Dan
rngData.Columns (j) .Delete
Anders
'Verwijderen merk
Application.CutCopyMode = False
End If
End With
End If
End If
Volgende j
Volgende i

End Sub

Functie AreEqualArr (arr1, arr2) zoals Van Boole
Dim i As Long, n As Long
AreEqualArr = False
Voor n = LBound (arr1) Om UBound (arr1)
Als arr1 (n, 1) <> arr2 (n, 1) dan
Exit Function
End If
Volgende n
AreEqualArr = True
End Function

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (7164) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vindt u hier: verwijderen Duplicate Kolommen.