Excel-Makro: Ersetzen Sie den gesamten Zellinhalt; ersetzen Sie 1, aber nicht 10, 11, 21 usw.

Excel-Makro: Ersetzen Sie den gesamten Zellinhalt; ersetzen Sie 1, aber nicht 10, 11, 21 usw.

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.

verwandte Informationen