Discussion:
suchen / ersetzen Makro
(zu alt für eine Antwort)
Chris Forster
2004-02-06 11:28:26 UTC
Permalink
Mein Problem:
Ich muss eine Liste mit vielen Einträgen bereinigen. Die ersten zwanzig
Änderungen habe ich mit Suchen/Ersetzen vollzogen aber noch stehen Dutzende
weitere an.

Ausgangslage:
A1 bis A(n) enthalten falschen Text, z.B. "Radsprort Zeitung"
B1 bis B(n) die jeweils richtigen Texte, z.B "Radsport Magazin"
Die Zellen D1 bis D1000 enthalten einen zu korrigierenden Text.

Mein Makroproblem:
Wenn ich auf Spalte A navigiere, sollte das Makro auf "Knopfdruck" den auf
der Zelle liegenden Text als Suchtext und den entsprechenden Text in der B
Spalte als "Ersetzentext".
Dann die Range D1:D1000 durchsuchen,
und Treffer ohne Rückfrage ersetzen.

Leider klappt das mit dem Aufzeichnen der Makros nicht wie ich mir das
vorstelle.
Gibt es sowas (ähnliches) in Makrosammlungen?

Besten Dank für Tipps und Hilfen!
Melanie Breden
2004-02-06 15:35:24 UTC
Permalink
Hallo Chris,
Post by Chris Forster
Ich muss eine Liste mit vielen Einträgen bereinigen. Die ersten zwanzig
Änderungen habe ich mit Suchen/Ersetzen vollzogen aber noch stehen Dutzende
weitere an.
A1 bis A(n) enthalten falschen Text, z.B. "Radsprort Zeitung"
B1 bis B(n) die jeweils richtigen Texte, z.B "Radsport Magazin"
Die Zellen D1 bis D1000 enthalten einen zu korrigierenden Text.
Wenn ich auf Spalte A navigiere, sollte das Makro auf "Knopfdruck" den auf
der Zelle liegenden Text als Suchtext und den entsprechenden Text in der B
Spalte als "Ersetzentext".
Dann die Range D1:D1000 durchsuchen,
und Treffer ohne Rückfrage ersetzen.
Leider klappt das mit dem Aufzeichnen der Makros nicht wie ich mir das
vorstelle.
Gibt es sowas (ähnliches) in Makrosammlungen?
du könntest mal im Google-Archiv mit den Stichwörter Ersetzen, letzte Zeile u.ä. suchen.

Vielleicht hilft dir auch folgender Ansatz:

Sub Ersetzen()
With ActiveCell
Columns("D").Replace .Value, .Offset(0, 1).Value, xlPart
End With
End Sub

Oder alle Begriffe der Spalte A durchlaufen:

Sub ErsetzenAlles()
Dim rngCell As Range
Dim lngLR As Long

lngLR = Cells(Rows.Count, "A").End(xlUp).Row
For Each rngCell In Range("A1").Resize(lngLR, 1)
Columns("D").Replace rngCell.Value, _
rngCell.Offset(0, 1).Value, xlPart
Next rngCell
End Sub
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Chris Forster
2004-02-06 16:20:30 UTC
Permalink
Hallo Melanie.
Besten Dank für Deine Antwort.
Ist eigentlich das was ich suchte. Schon erstaunlich, dass Profis mit einem
lockeren 3 Zeiler das gleiche erreichen wie Banausen mit einem x-Zeiler.

Nun hab ich aber das Problem, dass ich jeweils den ganzen Zellinhalt
suchen/ersetzen muss, mir "Replace" jedoch nur den Suchstring ersetzt.
Kannst Du mir noch einen Anschlusstipp dazu geben?
(und euer Buch schau ich mir nächstens in der Buchhandlung an!)

Besten Dank
Chris
Post by Melanie Breden
Hallo Chris,
Sub Ersetzen()
With ActiveCell
Columns("D").Replace .Value, .Offset(0, 1).Value, xlPart
End With
End Sub
Melanie Breden
2004-02-06 17:12:20 UTC
Permalink
Hallo Chris,
Post by Chris Forster
Ist eigentlich das was ich suchte. Schon erstaunlich, dass Profis mit einem
lockeren 3 Zeiler das gleiche erreichen wie Banausen mit einem x-Zeiler.
vielen Dank für die Blumen :-)
Post by Chris Forster
Nun hab ich aber das Problem, dass ich jeweils den ganzen Zellinhalt
suchen/ersetzen muss, mir "Replace" jedoch nur den Suchstring ersetzt.
Kannst Du mir noch einen Anschlusstipp dazu geben?
z.B. für die aktive Zelle:

Sub Ersetzen()
Dim rngCell As Range
Dim lngLR As Long

lngLR = Cells(Rows.Count, "D").End(xlUp).Row

With ActiveCell
For Each rngCell In Range("D1").Resize(lngLR, 1)
If InStr(rngCell.Value, .Value) Then
rngCell.Value = .Offset(0, 1).Value
End If
Next rngCell
End With
End Sub
Post by Chris Forster
(und euer Buch schau ich mir nächstens in der Buchhandlung an!)
Dann viel Spaß dabei :-)
--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
Lesen Sie weiter auf narkive:
Loading...