"Replace" Makro dauert 2-3 Minuten

Bild

Betrifft: "Replace" Makro dauert 2-3 Minuten
von: pseher
Geschrieben am: 05.05.2015 14:13:13

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

Bild

Betrifft: AW: "Replace" Makro dauert 2-3 Minuten
von: Daniel
Geschrieben am: 05.05.2015 14:20:12
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

Bild

Betrifft: AW: "Replace" Makro dauert 2-3 Minuten
von: pseher
Geschrieben am: 05.05.2015 14:23:41
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

Bild

Betrifft: AW: "Replace" Makro dauert 2-3 Minuten
von: Rudi Maintaire
Geschrieben am: 05.05.2015 14:26:37
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

Bild

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

Bild

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

Bild

Betrifft: Array vs. Array
von: RPP63
Geschrieben am: 05.05.2015 15:53:14
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

Bild

Betrifft: AW: Array vs. Array
von: Daniel
Geschrieben am: 05.05.2015 16:05:04
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

Bild

Betrifft: Danke für die Aufklärung! owT
von: RPP63
Geschrieben am: 05.05.2015 18:06:27


 Bild

Beiträge aus den Excel-Beispielen zum Thema ""Replace" Makro dauert 2-3 Minuten"