Ich muss in einer Excel-Tabelle eine große Anzahl von Zahlen durch Wörter ersetzen. Beispiel:
1 = hello
12 = goodbye
4 = cat
usw. Ich kann es mit der Standardfunktion „Suchen und Ersetzen“ machen, aber ich muss eine große Liste durcharbeiten (ungefähr 240 Zahlen-/Wortkombinationen), also dachte ich, ich verwende ein Makro.
Ich habe das:
Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="1", Replacement:="hello"
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
Next
End Sub
Aber es ersetzt die 1 in 12, sodass in der Zelle „Hallo2“ statt „Auf Wiedersehen“ steht. Wie kann ich dafür sorgen, dass es sich nur auf Zellen auswirkt, die nur die bestimmte Zahl enthalten, so wie „Gesamten Zellinhalt abgleichen“ funktioniert?
Jede Hilfe ist willkommen.
Antwort1
Das Ändern der Reihenfolge ist in Ordnung, solange jeder Wert im Blatt ersetzt wird. Wenn Ihr Blatt jedoch 11 enthielt, das nicht ersetzt werden sollte, wird es durch Ändern der Reihenfolge trotzdem durch hello1 ersetzt.
Um die Übereinstimmung mit der gesamten Zelle zu verwenden, geben Sie an
,LookAt:=xlWhole
als weiteren Parameter für die Methode „Replace“ angeben. „Replace“ ist eine gültige Methode für einen Bereich, daher ist Ihre For-Schleife nicht erforderlich. Sie können stattdessen angeben
Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole
Antwort2
Ich bin mir nicht sicher, ob es eine bessere Lösung gibt, aber für mich bedeutet das, sie in umgekehrter Reihenfolge anzuordnen. Zum Beispiel:
Sub findreplacer()
For Each mycell In Range("A1:A1000")
mycell.Replace What:="12", Replacement:="goodbye"
mycell.Replace What:="4", Replacement:="cat"
mycell.Replace What:="1", Replacement:="hello"
Next
End Sub
In diesem Fall würde zuerst die 12 durch „Auf Wiedersehen“ ersetzt, und wenn die Zeile kommt, die die 1 durch „Hallo“ ersetzt, wäre sie bereits geändert.
Auch hier gibt es wahrscheinlich eine bessere Lösung, aber ich denke, dass dies für eine schnelle Lösung der von Ihnen beschriebenen Parameter funktionieren würde.