我需要在 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 而不是 goodbye。我怎样才能让它只影响仅包含特定数字的单元格,就像“匹配整个单元格内容”一样?
任何帮助均感激不尽。
答案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”替换,而当出现将 1 替换为“hello”的行时,它就已经改变了。
再次,可能存在更好的解决方案,但我认为这可以快速修复您描述的参数。