Als Antwort auf diesen Beitrag
Moin!
Nö, ich werde nicht ausprobieren, wie lang eine rückwärtige Schleife mit Zellzugriff über 300K Zeilen nebst Löschungen benötigt.
Dürfte zig Minuten dauern …
Hingegen ist Daniels Methode mit Sortieren und Duplikate entfernen pfeilschnell!
Wir basteln uns mal eine Beispieldatei mit 100.000 Zeilen.
• Spalte A Buchstaben A-D
• Spalte B Buchstaben E-H mit den möglichen Endungen .jpg und .html
• Spalte C mit Daniels Formelvorschlag
• Dies ergibt 4*4 html-Unikate und 4*4 jpg-Unikate (also 32) auf 100.000 Zeilen.
Sub Fill_It()
Cells.Delete
Cells(1).Resize(, 3) = Array("Sp1", "Sp2", "Sp3")
Cells(2, 1).Formula2 = "=CHAR(RANDARRAY(100000,,65,68,1))"
Cells(2, 2).Formula2 = _
"=CHAR(RANDARRAY(100000,,69,72,1))&INDEX({"".html"","".jpg""},RANDARRAY(100000,,1,2,1))"
Cells(2, 3).Resize(100000).Formula = "=IF(RIGHT(B2,3)=""jpg"",ROW(),1/ROW())"
With Cells(1).CurrentRegion
.Copy
.PasteSpecial xlPasteValues
.HorizontalAlignment = xlCenter
.NumberFormat = "[<1]0.000;General"
.Columns.AutoFit
End With
Application.Goto Cells(1)
End Sub
Folgendes Makro behält die letzten jpg- und die ersten html-Unikate,
Dauer: < 0,4 Sekunden!
Sub letzte_Eindeutige_jpg_erste_eindeutige_html()
Dim Start#
Start = Timer
With Range("A1").CurrentRegion
.Sort .Cells(3), xlDescending, Header:=xlYes
.RemoveDuplicates Array(1, 2)
End With
With Range("A1").CurrentRegion
.Sort Range("B2"), , Range("A2"), Header:=xlYes
End With
Debug.Print Timer - Start
End Sub
Gruß Ralf