Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: doppelte Einträge in einer Spalte löschen

doppelte Einträge in einer Spalte löschen
Thomas
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
Anzeige

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

Betreff
Benutzer
Anzeige
AW: doppelte Einträge in einer Spalte löschen
06.01.2010 01:11:46
Daniel
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
Anzeige
AW: doppelte Einträge in einer Spalte löschen
06.01.2010 09:41:14
Helge
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.
AW: doppelte Einträge in einer Spalte löschen
06.01.2010 23:42:56
Thomas
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Doppelte Einträge in einer Spalte löschen


Schritt-für-Schritt-Anleitung

Um doppelte Einträge in einer Spalte zu löschen, kannst du folgende Schritte befolgen:

  1. Makro erstellen:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" klickst und "Einfügen" -> "Modul" wählst.
    • Kopiere und füge das folgende Makro ein:
    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
  2. Makro ausführen:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke ALT + F8, wähle DoppelteLöschen und klicke auf "Ausführen".
  3. Langsame Ausführung optimieren:

    • Wenn das Makro lange dauert, kannst du die Berechnung auf manuell umstellen und die Bildschirmaktualisierung deaktivieren. Ändere das Makro wie folgt:
    Sub DoppelteLöschenOptimiert()
       Application.ScreenUpdating = False
       Application.Calculation = xlCalculationManual
    
       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
    
       Application.Calculation = xlCalculationAutomatic
       Application.ScreenUpdating = True
    End Sub

Häufige Fehler und Lösungen

  • Problem: Das Makro löscht nicht alle doppelten Einträge.

    • Lösung: Stelle sicher, dass die Spalte korrekt angegeben ist und dass das Makro in der richtigen Tabelle ausgeführt wird.
  • Problem: Excel reagiert nicht mehr oder läuft sehr langsam.

    • Lösung: Verwende die optimierte Version des Makros, um die Bildschirmaktualisierung während der Ausführung zu deaktivieren.

Alternative Methoden

  • Spezialfilter verwenden:

    1. Markiere die Daten.
    2. Gehe zu Daten -> Filter -> Erweiterter Filter.
    3. Wähle "An eine andere Stelle kopieren" und aktiviere "Keine Duplikate".
  • Access verwenden: Wenn du mit großen Datenmengen arbeitest, kann es sinnvoll sein, doppelte Datensätze in Access zu löschen. Access bietet leistungsstarke Funktionen zur Verwaltung von großen Datenmengen und kann duplikate schneller entfernen.


Praktische Beispiele

  • Beispiel 1: Du hast eine Liste von Artikelnummern in Spalte A, die mehrfach vorkommen. Mit dem oben genannten Makro kannst du die Liste schnell bereinigen.

  • Beispiel 2: Bei der Verwendung des Spezialfilters kannst du eine neue Tabelle erstellen, die nur die einzigartigen Einträge aus Spalte A enthält, ohne die Originaldaten zu verändern.


Tipps für Profis

  • VBA duplikate entfernen: Wenn du regelmäßig mit doppelten Einträgen arbeitest, erstelle ein Add-In, das dein Makro enthält, um schnell darauf zugreifen zu können.

  • Automatisierung: Du kannst das Makro so einstellen, dass es automatisch beim Öffnen der Datei ausgeführt wird, um immer mit einer bereinigten Liste zu starten.


FAQ: Häufige Fragen

1. Wie kann ich doppelte Adressen entfernen?
Du kannst die gleiche Methode wie für Artikelnummern verwenden. Stelle sicher, dass du die entsprechende Spalte angibst.

2. Gibt es eine Möglichkeit, die doppelten Werte in Spalten zu löschen, ohne ein Makro zu verwenden?
Ja, du kannst den Spezialfilter oder die bedingte Formatierung nutzen, um doppelte Werte hervorzuheben und dann manuell zu löschen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige