Excel 替换选定命名范围中的值

Excel 替换选定命名范围中的值,excel,vba,replace,Excel,Vba,Replace,A1单元到A7单元被命名为东京。单元格A1、A2、A6、A10的值为[ABC]。代码运行时,单元格A1、A2、A6中的值应替换为15迁移,单元格A10的值应保持为[ABC],因为它不在命名范围内 我尝试了以下操作,但它也替换了命名范围之外的值: For Each cell In Range("Tokyo") Cells.Replace What:="[*]", Replacement:="[15 Migration]", LookAt:=Part, SearchOrder:=ByRow

A1单元到A7单元被命名为东京。单元格A1、A2、A6、A10的值为[ABC]。代码运行时,单元格A1、A2、A6中的值应替换为15迁移,单元格A10的值应保持为[ABC],因为它不在命名范围内

我尝试了以下操作,但它也替换了命名范围之外的值:

For Each cell In Range("Tokyo")
    Cells.Replace What:="[*]", Replacement:="[15  Migration]", LookAt:=Part, SearchOrder:=ByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Next cell
不需要循环-只需使用Range.Replace即可。 真正的问题是Cells.Replace引用了ActiveSheet中的所有单元格,因此替换将发生在所讨论的范围之外。 请注意,您需要的是xlPart和xlByRows,而不是Part和ByRows。有关更多详细信息,请参阅文档。
您能否分享一些样本数据,以便我们重现您的问题?单元格A1至单元格A7已命名为Tokyo。单元格A1、A2、A6、A10的当前值为[ABC]。当vba代码运行时,单元格A1、A2、A6中的值应替换为15,单元格A10的值应保持为[ABC],因为它不在命名范围Tokyo内。谢谢BigBen。我还有一个问题。在您建议的上述代码中,我们可以执行类似替换的操作:=sheet2!A3如果我知道第2页单元格A3的替换值是多少。在上面的示例中,[15 Migration]是一个硬编码的值。当然,类似于Replacement的内容:=thishworkbook.Sheetssheet2.RangeA3.value。谢谢大本钟。我试过了,现在代码的一部分起作用了。然而,我还没有得到我想要的最终结果。下面是一个场景:在sheet1中,单元格A1的值是[ABCD],包括括号。当代码执行时,括号内的值应更改为表2中所选单元格的触点。例如,如果我在sheet2中选择单元格A2,则sheet1中A1上的内容应从[ABCD]更改为[sheet2中A2的内容]。如果我在seet2中选择单元格A5,则表1中A1上的内容应从[ABCD]更改为[sheet2中A5的内容]。可能会问一个新问题,包括您正在使用的代码和什么不起作用。
Range("Tokyo").Replace What:="[*]", Replacement:="[15  Migration]", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False