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

"Replace" Makro dauert 2-3 Minuten

"Replace" Makro dauert 2-3 Minuten
05.05.2015 14:13:13
pseher
Hallo,
ich habe folgendes Makro geschrieben:
Sub Ersetzen()
Dim Zähler As Integer
Dim Zelle As Range
Dim Spalte As Integer
Zähler = 1
Spalte = 1
Application.ScreenUpdating = False
Do Until ActiveSheet.Cells(Zähler, 1).Value = ""
For Spalte = 1 To 3
For Each Zelle In ActiveSheet.Cells(Zähler, Spalte)
Zelle.Value = Replace(Zelle.Value, "Sonstiges: ", "")
Zelle.Value = Replace(Zelle.Value, "Datum: ", "")
Next Zelle
Next
Zähler = Zähler + 1
Loop
Application.ScreenUpdating = True
End Sub
Das Ersetzen funktioniert schon mal. Nur dauert dies wie gesagt 2-3 Minuten, bis diese Prozedur durchgeführt wurde.
Wie kann ich dies ändern?
Bin noch ein Anfänger.
Grüße

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Replace" Makro dauert 2-3 Minuten
05.05.2015 14:20:12
Daniel
Hi
probier mal folgenden Code aus:
ActiveSheet.Range("A:C").Replace "Sonstiges: ", "", LookAt:=xlpart
ActiveSheet.Range("A:C").Replace "Datum: ", "", LookAt:=xlpart
mit der Excelfunktion Ersetzen (welche du über diesen code ansteuerst) kannst du alle Zellen auf einmal bearbeiten.
Deine Mehtode bearbeitet jede Zelle einzeln und das ist für Excel sehr aufwendig.
Im Prinzip ist das so wie mit einem Handwerker.
Wenn du deine Fenster renovieren willst und den Handwerker für jedes Fenster einzeln bestellst und beaufragst, dann dauert das länger, als wenn du ihm gleich den Auftrag gibst, alle Fenster zu bearbeiten.
Grjß Daniel

Anzeige
AW: "Replace" Makro dauert 2-3 Minuten
05.05.2015 14:23:41
pseher
Hi Daniel,
Funzt...habe es mir schon fast wieder gedacht, das es sehr viel einfacher geht...Dabei war ich so stolz drauf, daß ich nun endlich mal was mit einer Do until Schleife hinbekommen habe:-))
Grazie
Peter

AW: "Replace" Makro dauert 2-3 Minuten
05.05.2015 14:26:37
Rudi
Hallo,
Sub Ersetzen()
Dim Zeile As Long
Dim Spalte As Integer
Dim vArr
vArr = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Resize(, 3)
Application.ScreenUpdating = False
For Zeile = 1 To UBound(vArr)
For Spalte = 1 To 3
vArr(Zeile, Spalte) = Replace(vArr(Zeile, Spalte), "Sonstiges: ", "")
vArr(Zeile, Spalte) = Replace(vArr(Zeile, Spalte), "Datum: ", "")
Next
Next Zeile
Cells(1, 1).Resize(UBound(vArr), 3) = vArr
End Sub

Gruß
Rudi

Anzeige
AW: "Replace" Makro dauert 2-3 Minuten
05.05.2015 14:35:32
Daniel
Hi Rudi
warum hier noch das "Application.ScreenUpdating = False" ?
ist doch absolut nutzlos, wenn du mit Arrays arbeitest.
Gruß Daniel

AW: "Replace" Makro dauert 2-3 Minuten
05.05.2015 15:21:12
Rudi
Hallo,
das ist ein Rudimaint ;-)
Nutzlos, schadet aber auch nicht.
Gruß
Rudi

Array vs. Array
05.05.2015 15:53:14
RPP63
Hi Rudi!
Ist dies nicht das doppelte Lottchen?
Wie Daniel schon schrieb, ist Replace doch bereits eine Array-Funktion, wenn ich einen Range mit mehreren Zellen angebe.
Gruß Ralf

AW: Array vs. Array
05.05.2015 16:05:04
Daniel
Du kannst die Range-Funktion Replace nicht auf ein Array anwenden, sondern nur auf einen Zellbereich.
Wenn du ein Array verwendest, musst du in einer Schleife jeden Wert einzen bearbeiten und hierzu die Textfunktion Replace verwenden.
von der Verarbeitungsgeschwidigkeit ist sowohl die Mehtode:
Zellwerte in Array schreiben, Arraywerte einzeln mit Textfunkton Replace bearbeiten, array zurückschreiben
als auch die Methode
Zellbereich mit Range-Funktion Replace als ganzes bearbeiten
sehr schnell.
das Range-Replace dürfte noch etwas schneller sein, lässt sich aber nicht an geänderte Aufgabenstellungen anpassen, was bei der Schleifenmethode gut möglich ist.
Lediglich die Methode:
Zellwerte einzeldn direkt in einer Schleife mit der Textfunktion Replace bearbeiten
ist extram langsam und sollte deswegen nicht verwendet werden.
Gruß Daniel

Anzeige
Danke für die Aufklärung! owT
05.05.2015 18:06:27
RPP63

270 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige