Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1072to1076
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

andere Möglichkeit für Makro

andere Möglichkeit für Makro
12.05.2009 11:29:22
Ivo
Hallo zusammen
ich habe mir dieses Makro geschrieben, es löscht alle Duplikate in Spalte A...
Jetzt ist aber mein Problem...wenn die Spalte 20000 Begriffe enthält, wird mit diesem Makro jede Zelle einzel durchsucht und es dauert nur für die eine Spalte mehrere Minuten um alle Duplikate zu löschen.
Matrizenformeln habe ich extra nicht angewandt ,da sonst die Datei zu gross werden würde.
Gibt es eine andere Möglichkeit, alle Duplikate in Spalte A zu löschen, welche schneller ist als dieses Makro?
Achtung: Spalte A muss sortiert (aufsteigend oder absteigend spielt keine Rolle) sein!

Sub löschen()
Range("A1").Select
Do Until IsEmpty(ActiveCell)
If ActiveCell.Offset(1, 0).Value = ActiveCell.Value Then
ActiveCell.Offset(1, 0).Cells.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub


Vielen Dank für eure Inputs!
Mit freundlichen Grüssen
Ivo

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: andere Möglichkeit für Makro
12.05.2009 11:40:44
Jens
Hallo Ivo
Filter-Spezialfilter-ohne Duplikate
Gruß aus dem Sauerland
Jens
AW: andere Möglichkeit für Makro
12.05.2009 11:58:18
Tino
Hallo,
versuche es mal hiermit, die letzten zwei Spalten werden für Formeln verwendet und
am Schluss wieder gelöscht.
Ich gehe auch im Makro davon aus, dass in Zeile 1 eine Überschrift enthalten ist.
Kannst ja mal testen ob es schneller ist.
Sub DoppelteLoeschen()
Dim Bereich As Range, SortBereich As Range
Dim iCalc As Integer

With Application
 iCalc = .Calculation
 .ScreenUpdating = False
 .EnableEvents = False
 .Calculation = xlCalculationManual
 
    
    Set Bereich = Range("A2", Cells(Rows.Count, 1).End(xlUp))
    Set Bereich = Bereich.Offset(0, Columns.Count - Bereich.Column)
    Set SortBereich = Bereich.Offset(0, -1)
    
    SortBereich.FormulaR1C1 = "=ROW()"
    Bereich.FormulaR1C1 = "=IF(COUNTIF(R2C1:RC1,RC1)>1,0,"""")"
    
    If .WorksheetFunction.CountIf(Bereich, 0) > 0 Then
     Set SortBereich = Range("A2", Bereich.Cells(Bereich.Cells.Count))
     
     SortBereich.Sort SortBereich(1, Columns.Count), xlAscending, , , , , , xlNo
     
     Bereich.SpecialCells(xlCellTypeFormulas, 1).EntireRow.Delete
     
     SortBereich.Sort SortBereich(1, Columns.Count - 1), xlAscending, , , , , , xlNo
    
    End If
    
    Columns(Columns.Count).Delete
    Columns(Columns.Count - 1).Delete
 
 
 .Calculation = iCalc
 .ScreenUpdating = True
 .EnableEvents = True
End With

End Sub


Gruß Tino

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige