首页 > 解决方案 > 绞尽脑汁试图替换公式中的子字符串而不替换稍大的子字符串?

问题描述

简单地说,我有一个带有公式的单元格

=IF(A4="Name", IFERROR(J4*(I4-AI4), 0), "")

我正在尝试用“BH4”替换“I4”,而“AI4”也不会变成“ABH4”。但不能假设该公式将始终遵循此模式(因此实际上并不是仅查找和替换字符串的第一次出现或类似的选项

我研究了 Replace 和 Substitute 函数,但它们似乎不处理通配符。我还尝试使用 Range.Replace 方法,我认为该方法可以处理通配符,但我无法真正让它工作。但即使那样,如果我不确定什么通配符设置会起作用

标签: excelvbareplacesubstitution

解决方案


假设公式在单元格B9中。

这只会更改子字符串的第一次出现:

Sub FixFormula()
    With Range("B9")
        .Formula = Application.Substitute(.Formula, "I4", "BH4", 1)
    End With
End Sub

推荐阅读