Löschen doppelter Spalten (Microsoft Excel)
Dror hat ein Arbeitsblatt, das eine Menge Daten enthält. Es ist möglich, dass die Daten in einer Spalte genau mit den Daten in einer anderen Spalte übereinstimmen. Er fragt sich daher, ob es eine einfache Möglichkeit gibt, doppelte Spalten im Arbeitsblatt zu löschen.
Der erste Schritt besteht natürlich darin, herauszufinden, ob zwei Spalten identisch sind oder nicht. Dies kann ziemlich einfach mit einer Array-Formel wie der folgenden bestimmt werden:
=AND(A1:A100=B1:B100)
(Denken Sie daran, dass eine Array-Formel mit Umschalt + Strg + Eingabetaste eingegeben wird.)
Die Formel vergleicht alle Werte in den ersten 100 Zeilen der Spalten A und B. Wenn sie alle gleich sind, gibt die Formel TRUE zurück. Wenn eine der Zellen nicht übereinstimmt, gibt die Formel FALSE zurück. Wenn das Ergebnis TRUE ist, können Sie eine der Spalten löschen, da sie identisch sind.
Wenn Sie etwas möchten, das etwas automatischer ist, was bedeutet, dass die doppelte Spalte gelöscht wird, müssen Sie ein Makro verwenden. In den folgenden Schritten werden alle Spalten im Arbeitsblatt durchlaufen und beginnend mit der Spalte ganz rechts alle Spalten verglichen. Wenn einige identisch sind – unabhängig von ihrer Reihenfolge im Arbeitsblatt -, werden Sie vom Makro gefragt, ob die doppelte Spalte gelöscht werden soll.
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
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (5674) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: