Microsoft Excel

Herbers Excel/VBA-Archiv

doppelte Einträge in einer Spalte löschen | Herbers Excel-Forum


Betrifft: doppelte Einträge in einer Spalte löschen von: Thomas
Geschrieben am: 06.01.2010 00:44:28

Hallo,

ich habe folgendes Problem:

Habs nach langen hin und her hinbekommen die doppelten Einträge in der Spalte A und die zugehörige Zeile mit diesem Makro zu löschen

Sub DoppelteLöschen()
   Dim iRow As Long, iRowL As Long
   iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
   For iRow = iRowL To 1 Step -1
      If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
         Rows(iRow).Delete
      End If
   Next iRow
End Sub
Die Tabelle hat ca 54000 Zeilen - ändert sich immer mal wieder wenn ein Update gemacht wird und 32 Spalten.

In Spalte A stehen die Artikelnummer und diese kommen ab und an doppelt oder dreifach bzw. vierfach vor - sollen aber nur einmal vorkommen.

Das Makro läuft ca. 100 Minuten - läßt sich das beschleunigen?

Die Werte in Spalte A sind gefiltert und die doppelten stehen alle in absteigender Form untereinander.

Könnt Ihr mir hier auf die Spünge helfen?

Gruß
Thomas

  

Betrifft: AW: doppelte Einträge in einer Spalte löschen von: Daniel
Geschrieben am: 06.01.2010 01:11:46

Hi

zum Thema Doppelte Löschen müsste eigentlich was im Archiv stehen.
im prinzip funktioniert das so:
1. Liste nach Artikelnummer sortieren
2. Hilfsspalte mit folgender Formel einfüguen und nach unten koperen (geschrieben für Zeile 1)
=Wenn(A1=A2;"";Zeile())
3. in der Hilfsspalte die Formeln durch Werte ersetzen (Kopieren / Inhalte einfügen - Werte)
4. die Datei nach der Hilfsspalte sortieren
5. die Hilfsspalte markieren (ganze Spalte)
6. über die Funktion START - SUCHEN und AUSWÄHLEN - INHALTE - LEERZELLEN die Selektion auf die Leerzellen beschränken.
7. die selektierten Leerzellen löschen mit der Option "ganze Zeile"
8. Hilfsspalte löschen

mit dieser Methode solltest du von Hand die Aufgabe in kürzester Zeit erledigen können und auch ein Makro ist nach dieser Methode am schnellsten.

Das Marko zu dieser Beschreibung würde so aussehen:

Sub DoppelteLöschen()
With ActiveSheet.UsedRange
    .Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlGuess
    With .Columns(.Columns.Count).Offset(0, 1)
        .FormulaR1C1 = "=if(RC1=R[1]C1,"""",Row())"
        .Formula = .Value
        .EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, Header:=xlGuess
        .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
        .EntireColumn.Delete
    End With
End With
        
End Sub
Gruß, Daniel


  

Betrifft: AW: doppelte Einträge in einer Spalte löschen von: Helge Kuehn
Geschrieben am: 06.01.2010 09:41:14

Hi, wenn du es nur einmal filtern willst kann dir der Spezialfilter( Data -- Filter -- Advanced Filter ) vll weiter helfen. Der gibt dir das ganze dann ohne Duplikate in einer anderen liste aus. Geht vll schnell, ansonsten mit access versuchen, damit geht es auf jeden Fall schneller.


  

Betrifft: AW: doppelte Einträge in einer Spalte löschen von: Thomas
Geschrieben am: 06.01.2010 23:42:56

Hallo Daniel,
Hallo Helge,

Du kannst davon ausgehen das ich die Suche benutzt habe :) bevor ich mich an die Profis wende sonst hätte ich das Makro das ich einsetzte nicht gefunden - mir ging es nur um die Zeit und ob man es verbessern kann.

Ich habe Dein Makro gerade mal laufen lassen - TOP - läuft in ca 5 Sek. durch - spart mir ne Menge Zeit.

Merci

Schulde Dir ein paar Weißbier - sollste mal in Franken sein - rühr Dich :) - gehen wie in einen Biergarten.

Der Umstieg auf Access ist geplant - aber da brauch ich erst gar nicht anfangen - bin froh wenn ich in Ecel soweit klar komme.

Gruß und Euch ein gesundes und erfolgreiches 2010
Thomas


Beiträge aus den Excel-Beispielen zum Thema "doppelte Einträge in einer Spalte löschen"