简单地说,我有一个包含公式的单元格
=IF(A4="Name", IFERROR(J4*(I4-AI4), 0), "")我尝试将"I4“替换为"BH4”,而不是将"AI4“也变成"ABH4”。但不能假设公式总是遵循这种模式(所以实际上不能选择只查找并替换字符串的第一个匹配项或类似的内容
我已经研究了替换和替换函数,但它们似乎不能处理通配符。我还尝试使用Range.Replace方法,我认为它应该能够处理通配符,但我无法真正让它工作。但即使这样,如果我真的不确定什么通配符设置可以工作
发布于 2021-09-14 23:52:28
假设公式在单元格B9中。
这将仅更改子字符串的first匹配项:
Sub FixFormula()
With Range("B9")
.Formula = Application.Substitute(.Formula, "I4", "BH4", 1)
End With
End Sub发布于 2021-09-15 10:14:18
我认为您需要使用如下所示的正则表达式:
Sub regex()
Set myRegExp = New RegExp
myRegExp.Pattern = "([^a-zA-Z])I4([^a-zA-Z])"
With Range("A1")
.Formula = myRegExp.Replace(.Formula, "$1AB4$2")
End With
End Sub请注意,您必须首先转到VBA屏幕中的工具|引用,并启用Microsoft正则表达式5.5。
https://stackoverflow.com/questions/69184944
复制相似问题