Merkwürdiges Performance-Problem beim säubern
10.06.2005 16:08:38
Eduard
bin mal auf Eure Hilfe angewiesen...
Folgendes Problem:
Führe in VBA eine Säuberung von Artikelnummern durch. Merkwürdigerweise benötigt dieser laut Stoppuhr über 75 Sekunden und lastet die CPU zu 99% aus. Excel ist in den 75 Sek. wie gelähmt.
Situation:
Spalte B lädt aus einer anderen Tabbelle ca. 1200 Artikelnummer. Allerdings sind Dublikate vorhanden welche entfernt werden sollen, wodurch keine Leerzeilen entstehen dürfen
Vorgehen
1.
Spalte C überprüft, ob Dublikate in Spalte B vorliegen. Wenn Ja wird das Dublikat gelöscht. Dazu benutze ich in Zelle C90 z.B. folgenden Formel:
=WENN(ZÄHLENWENN($B$22:B90;B90)>1;"";B90)
(Wenn der Wert B90 in der Matrix B22:B90 öfter als einmal vorkommt, dann lösche ihn.)
2. Im Zweiten Schritt lasse ich ein Makro über die Spalte laufen, welches die soeben erzeugten leeren Zellen entfernt. Und in Spalte D schreibt:
Sub DublikateInArtikelnummerSäubern()
Dim zelle As Range
Dim i As Integer
i = 22
For Each zelle In Application.Workbooks("Bestellformular.xls").Worksheets(1).Range("C22:C2021")
If zelle.Value <> "" Then
Application.Workbooks("Bestellformular.xls").Worksheets(1).Range("D" & i) = zelle.Value: _
i = i + 1
End If
Next zelle
End Sub
-----------------Fertig-------------------------------------
An der so entstanden gesäuberten Spalte D hängen dann noch ca. 10 x 1200 SVERWEISE die anhand der Artikelnummer noch Produkteigenschaften finden, das geht allerding ziemlich schnell.
Es kann doch nicht sein, dass diese einfache Schleife den Rechner so belastet!?!
Vielleicht seh ich den Wald auch vor lauter Bäumen nicht mehr, und es gibt eine viel einfachere Lösung für mein Problem...
Kann mir bitte jemand helfen?
Danke und lieber Gruß,
Eduard