Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Doppelte Zeilen löschen

Doppelte Zeilen löschen
16.05.2013 21:09:27
WalterK
Hallo,
in der Recherche habe ich den folgenden Code von Gerd L gefunden. Der Code löscht doppelte Zeilen, relevant sind die Spalte A,B und C.
Sub testA()
Dim vntSpalten()
Dim lngZeile As Long, intZähler As Integer, x As Long
vntSpalten = Array("B", "D", "I")                                 'Prüfspalten ggf. anpassen !!
For lngZeile = Cells(Rows.Count, 1).End(xlUp).Row To 8 Step -1
x = 1
For intZähler = LBound(vntSpalten) To UBound(vntSpalten)
x = x * Application.WorksheetFunction.CountIf _
(Range(Cells(7, vntSpalten(intZähler)), _
Cells(lngZeile - 1, vntSpalten(intZähler))), _
Cells(lngZeile, vntSpalten(intZähler)))
Next
If x > 0 Then Rows(lngZeile).Delete
Next
End Sub
Meine Frage:
In meiner Tabelle sind die Spalten A bis Z relevant. Muss ich auch alle Spalten einzeln anführen oder gibt es dafür eine andere Schreibweise?
Besten Dank für die Hilfe und Servus, Walter

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Doppelte Zeilen löschen
16.05.2013 21:23:50
WalterK
es sollte natürlich lauten:
in der Recherche ......, relevant sind die Spalten B, D und I.

AW: Doppelte Zeilen löschen
17.05.2013 02:36:27
fcs
Hallo Walter,
hier das Makro in anepasster Form. Die zu prüfenden Spalten werden hier in einer Select Case-Anweisung festgelegt. Das ist flexibler als über das Array.
Excel hat übrigens seit der Version 2007 über Menü Einfügen--Tabelle auch einen Weg ohne Makros doppelte Datenzeilen aus einer Tabelle zu entfernen.
Gruß
Franz
P.S.: Ansonsten wüßte ich zu gern, in welcher VBA-Schule die Unsitte verbreitet wird/wurde, in Verbindung mit Cells den Parameter "Column" als String zu übergeben.
Ich hab jedenfalls noch Zeiten erlebt, da hat der VBA-Compiler das nicht toleriert.
Sub testA()
Dim lngZeile As Long, lngSpalte As Long, bolDelete As Boolean
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
For lngZeile = .Cells(.Rows.Count, 1).End(xlUp).Row To 8 Step -1
bolDelete = True
For lngSpalte = 1 To 26 'Spalten A bis Z
'Prüfung der relevanten Spalten auf doppelte Einträge
Select Case lngSpalte
'        Case 2, 4, 9 'Spalten B, D, I
Case 1 To 26 'alle Spalten von A bis Z
If Application.WorksheetFunction.CountIf(.Range(.Cells(7, lngSpalte), _
.Cells(lngZeile - 1, lngSpalte)), .Cells(lngZeile, lngSpalte)) = 0 Then
bolDelete = False
Exit For
End If
Case Else
'do nothing
End Select
Next lngSpalte
If bolDelete Then .Rows(lngZeile).Delete
Next lngZeile
End With
End Sub

Anzeige
Danke Franz, so gehts! Servus, Walter
17.05.2013 19:53:49
WalterK

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige