Excel巨集:取代整個儲存格內容;替換 1 但不替換 10、11、21 等

Excel巨集:取代整個儲存格內容;替換 1 但不替換 10、11、21 等

我需要用 Excel 電子表格中的文字替換大量數字。例如:

1 = hello
12 = goodbye
4 = cat

我可以使用標準搜尋和替換來完成此操作,但我有一個很大的清單需要處理(大約 240 個數字/單字組合),所以我想我會使用巨集。

我有這個:

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

但它取代了 12 中的 1,因此單元格讀取 hello2 而不是再見。我怎麼能讓它只影響只包含特定數字的單元格,就像「匹配整個單元格內容」的工作方式一樣?

任何幫助表示讚賞。

答案1

更改順序就可以,只要工作表中的每個值都將被替換即可。如果您的工作表包含 11,但不會被替換,那麼更改順序仍會將其替換為 hello1。
若要使用匹配整個儲存格指定

,LookAt:=xlWhole

作為 Replace 方法的另一個參數。 Replace 是 Range 上的有效方法,因此不需要 For 迴圈。您可以改為指定

Range("A1:A1000").Replace What:="12", Replacement:="goodbye", LookAt:=xlWhole  
Range("A1:A1000").Replace What:="4", Replacement:="cat", LookAt:=xlWhole

答案2

我不確定是否有更好的解決方案,但在我看來,這就是將它們按相反的順序排列。例如:

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

在這種情況下,12 首先會被「goodbye」替換,當出現用「hello」替換 1 的行時,它就已經改變了。

同樣,可能有更好的解決方案,但我認為這可以快速修復您所描述的參數。

相關內容