Archiv
Ansicht:   
Suche   erweiterte Suche

Nachricht aus dem Archiv

effeff schrieb am 22.July.2009, 13:42:44 in der Kategorie pc.coding

XLS 2002: Suchen/Ersetzen - Bug oder geht´s?

> Das kann ich mir vorstellen. Eine andere schnelle Lösung fällt mir leider
> auch nicht ein - man könnte es höchstens mal über einen Array testen. Die
> Inhalte des gesamten Bereichs an einen Array übergeben und dann in diesem
> ersetzen. Aber spätestens beim Zurückschreiben in die Zellen werden die
> Performanceverluste sicher auch wieder spürbar.

Die schnellste und einfachste Lösung, die mir zum Lars-Bug einfällt, wäre keine Iteration durch sämtliche Zeilen, sondern nur durch die mit den Matches. D. h., wir suchen also innerhalb der Spalte nur die Zeilen mit dem passenden Inhalt, tauschen den aus und suchen ab der nächsten Zeilen weiter - der durchsuchte Range wird also immer weiter verschoben, bis kein zu ersetzender Text mehr gefunden wird. Das ist schon ziemlich schnell:

Option Explicit

Sub Ersetzen()

Dim WB As Workbook
Dim WS As Worksheet
Dim Rg As Range
Dim GefZelle As Range
Dim Suchtext As String
Dim Ersatztext As String

Suchtext = \"Baum\"
Ersatztext = \"Lindenbaum\"

Set WB = ThisWorkbook
Set WS = WB.Sheets(\"Tabelle1\")
Set Rg = WS.Range(\"A1:A65535\")

Set GefZelle = Rg.Find(What:=Suchtext)

Do While Not GefZelle Is Nothing

WS.Cells(GefZelle.Row, 1).Value = Ersatztext

Set Rg = WS.Range(Cells(GefZelle.Row + 1, 1), Cells(65535, 1))

Set GefZelle = Rg.Find(What:=Suchtext)

Loop

Set GefZelle=Nothing
Set Rg=Nothing
Set WS=Nothing
Set WB=Nothing

End Sub

Archiv
Ansicht:   
Suche   erweiterte Suche
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz