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

Forumthread: suchen ersetzen zu langsam

suchen ersetzen zu langsam
Stefan
Hallo Zusammen,
habe mir ein Macro gebastelt, welches in einer Tabelle einen Teil eines Textes ersetzen soll.
(z.B. für A1: "ABCBLABLA_November2011" durch ABCBLABLA_Oktober2011")
Leider läuft das Macro viel zu langsam.(liegt am suchen ersetzen Code).
(von A1 bis K201 dauert das ersetzen fast 30 sekunden)
Kennt jemand einen code der suchen ersetzen schneller durchführt ?
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Tabellennamen neu festlegen
neuTabelle = Worksheets("macro").Range("A2")
'Tabellennamen neu festlegen
altTabelle = Worksheets("macro").Range("A1")
Sheets("Tabelle1").Select
Range("A1:K201").Select
Selection.Replace What:=altTabelle, Replacement:=neuTabelle, LookAt _
:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Sheets("macro").Select
Worksheets("macro").Range("A1") = neuTabelle
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Danke schonmal im voraus
Stefan
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: suchen ersetzen zu langsam
25.11.2011 07:43:01
Marc
Moin!
Bei mir läuft der code noch in derselben Sekunde.
Ich vermute das du in Sheets(1) Formeln hinterlegt hast, in denen du den Teil der Formel ersetzt.
Diese Ersetzten wiederum bewirkt, das die Formel SOFORT neu berechnet wird, bzw das ganze Blatt. _ Das fängst du mit

Application.Calculation = xlCalculationManual 
ab. WICHTIG: Am Ende des Codes mußt du die Berechnung wieder auf

Application.Calculation = xlCalculationAutomatic
setzen, sonst bleibt die manuelle Berechnung. Denke auch bei Code-Abbrüchen daran.
Ich hab Deinen Code mal ergänzt und ein bissl umformatiert. Versuchs mal.
Gruß, Marc
Sub test()
Anfang = "Beginn " & Time
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
With Worksheets("macro")
neuTabelle = .Range("A2") 'Tabellennamen auslesen
altTabelle = .Range("A1") 'Tabellennamen neu festlegen
.Range("A1") = neuTabelle
End With
Sheets("Tabelle1").Range("A1:K201").Replace What:=altTabelle, Replacement:=neuTabelle, LookAt:=xlPart
With Application
.DisplayAlerts = True
.ScreenUpdating = True 'darauf kann verzichtet werden, da am Ende der Sub eh wieder eingeschaltet wird
.Calculation = xlCalculationAutomatic
End With
MsgBox Anfang & vbCrLf & "Ende " & Time
End Sub
Anzeige
AW: suchen ersetzen zu langsam
25.11.2011 08:09:14
Stefan
Hallo Marc,
danke für deine schnelle Antwort !!!
Habs gleich ausprobiert, leider braucht Excel immer noch so lange (ca. 35 Sekunden).
Was dein Macro auch schön anzeigt.
Ich habe in dem Bereich alles Verknüpfungen zu einer anderen XLS Tabelle, welche jedes Monat
ein neues Tabellenblatt bekommt. (Januar 2010, Februar 2010 usw.)
Ich versuche mit suchen ersetzen immer auf das aktuelle zuzugreifen.
Deshalb dachte ich, dass deine Super Idee mit der Aktalisierung greift. Tut es aber leider nicht.
Vielleicht dauert das ersetzen ansich so lange ? Kann ich mir für diesen mini Bereich kaum vorstellen.
(hab ja nen super schnellen Rechner)...
Hmm ...
:-)
Stefan
Anzeige
AW: suchen ersetzen zu langsam
25.11.2011 08:09:50
guentherh
Hallo Stefan,
ein so lange Antwortzeiten kenne ich auch, wenn Verknüpfungen auf andere Dateien habe, und diese nicht geöffnet sind, worst case liegen sie auch noch auf einem Netzlaufwerk.
Dann wird bei jeder Zelle die Datei im Hintergrund geöffnet, der Wert nachgesehen, und wieder geschlossen.
Abhilfe schafft dann, wenn die Datei auf die die neue Verknüpfung sich beziehen wird, schon vorher geöffnet ist.
Gruß,
Günther
Anzeige
AW: suchen ersetzen zu langsam
25.11.2011 08:19:33
Stefan
Danke !!!
wenns geöffnet ist gehts schneller.
Falls jemand ne Lösung hat ohne die Datei zu öffnen, wäre ich sehr dankbar !!!!
:-)
Danke nochmal
Stefan
AW: suchen ersetzen zu langsam
25.11.2011 10:50:38
Rudi
Hallo,
teste das mal:
Sub xxxx()
Dim arr, i As Long, j As Long, altTabelle As String, neuTabelle As String
'Tabellennamen neu festlegen
neuTabelle = Worksheets("macro").Range("A2")
altTabelle = Worksheets("macro").Range("A1")
With Sheets("Tabelle1").Range("A1:K201")
arr = .FormulaLocal
For i = 1 To UBound(arr)
For j = 1 To UBound(arr, 2)
arr(i, j) = Replace(arr(i, j), altTabelle, neuTabelle)
Next
Next
.FormulaLocal = arr
End With
End Sub

Gruß
Rudi
Anzeige
AW: suchen ersetzen zu langsam
25.11.2011 13:05:05
Stefan
SUPER !!!!
;
Anzeige

Infobox / Tutorial

Suchen und Ersetzen in Excel: Geschwindigkeit verbessern


Schritt-für-Schritt-Anleitung

Um die Geschwindigkeit des Suchen und Ersetzens in Excel zu verbessern, kannst Du den folgenden VBA-Code verwenden. Dieser Code optimiert die Berechnungen und vermeidet Verzögerungen durch häufige Neuberechnungen.

Sub OptimizedReplace()
    Dim arr As Variant
    Dim i As Long, j As Long
    Dim altTabelle As String, neuTabelle As String

    ' Tabellennamen festlegen
    neuTabelle = Worksheets("macro").Range("A2").Value
    altTabelle = Worksheets("macro").Range("A1").Value

    ' Bildschirmaktualisierung und Berechnung deaktivieren
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    With Sheets("Tabelle1").Range("A1:K201")
        arr = .FormulaLocal
        For i = 1 To UBound(arr)
            For j = 1 To UBound(arr, 2)
                arr(i, j) = Replace(arr(i, j), altTabelle, neuTabelle)
            Next j
        Next i
        .FormulaLocal = arr
    End With

    ' Berechnung und Bildschirmaktualisierung wieder aktivieren
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

Dieser Code ersetzt den Text in den Zellen von A1 bis K201 und kann die Geschwindigkeit des Ersetzens erheblich verbessern.


Häufige Fehler und Lösungen

  1. Formeln im Bereich: Wenn Du Formeln in dem Bereich hast, in dem Du den Text ersetzt, kann dies die Geschwindigkeit beeinträchtigen. Stelle sicher, dass alle Formeln, die die Ersetzung beeinflussen, nicht sofort neu berechnet werden müssen.

  2. Verknüpfungen zu externen Dateien: Verknüpfungen zu anderen Excel-Dateien, die nicht geöffnet sind, können die Leistung stark beeinträchtigen. Achte darauf, dass die betreffenden Dateien geöffnet sind, um die Ersetzung zu beschleunigen.

  3. Falsche Bereichsreferenz: Überprüfe, ob der angegebene Bereich korrekt ist. Ein zu großer Bereich kann die Ausführungszeit verlängern.


Alternative Methoden

Wenn der oben angegebene Code nicht den gewünschten Effekt hat, kannst Du folgende Alternativen in Betracht ziehen:

  • Manuelles Suchen und Ersetzen: Nutze die integrierte Funktion in Excel (Strg + H), um die Ersetzung manuell durchzuführen. Dies kann für kleinere Datenmengen schneller sein.

  • Power Query: Verwende Power Query, um Daten zu transformieren und zu bearbeiten. Diese Methode kann effizienter sein, besonders bei großen Datenmengen.


Praktische Beispiele

Ein Beispiel für die Verwendung des VBA-Codes könnte so aussehen:

  • Du möchtest alle Instanzen von "ABCBLABLA_November2011" durch "ABCBLABLA_Oktober2011" in einem bestimmten Bereich ersetzen.
  • Stelle sicher, dass der Bereich korrekt definiert ist und dass keine externen Verknüpfungen vorhanden sind.

Tipps für Profis

  • Code optimieren: Reduziere die Anzahl der Berechnungen im Code, indem Du nur die notwendigen Zellwerte aktualisierst.
  • Batch-Verarbeitung: Verarbeite große Datenmengen in Batches, um die Leistung zu verbessern.
  • Vorberechnung aktivieren: Deaktiviere die automatische Berechnung vor der Ersetzung und aktiviere sie danach wieder, um unnötige Berechnungen zu vermeiden.

FAQ: Häufige Fragen

1. Warum dauert das Ersetzen in Excel so lange? Das kann an Formeln, Verknüpfungen zu anderen Dateien oder an der Größe des Datenbereichs liegen.

2. Wie kann ich die Geschwindigkeit des Ersetzens verbessern? Verwende VBA, um Bildschirmaktualisierung und Berechnungen zu deaktivieren, während Du den Ersetzungsvorgang durchführst.

3. Was kann ich tun, wenn es weiterhin langsam ist? Überprüfe, ob alle erforderlichen Dateien geöffnet sind, und versuche, die Daten in kleinere Bereiche aufzuteilen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige