首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绞尽脑汁试图替换公式中的子字符串而不替换稍大的子字符串?

问绞尽脑汁试图替换公式中的子字符串而不替换稍大的子字符串?
EN

Stack Overflow用户
提问于 2021-09-14 21:59:34
回答 2查看 38关注 0票数 2

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

代码语言:javascript
复制
=IF(A4="Name", IFERROR(J4*(I4-AI4), 0), "")

我尝试将"I4“替换为"BH4”,而不是将"AI4“也变成"ABH4”。但不能假设公式总是遵循这种模式(所以实际上不能选择只查找并替换字符串的第一个匹配项或类似的内容

我已经研究了替换和替换函数,但它们似乎不能处理通配符。我还尝试使用Range.Replace方法,我认为它应该能够处理通配符,但我无法真正让它工作。但即使这样,如果我真的不确定什么通配符设置可以工作

EN

回答 2

Stack Overflow用户

发布于 2021-09-14 23:52:28

假设公式在单元格B9中。

这将仅更改子字符串的first匹配项:

代码语言:javascript
复制
Sub FixFormula()
    With Range("B9")
        .Formula = Application.Substitute(.Formula, "I4", "BH4", 1)
    End With
End Sub
票数 1
EN

Stack Overflow用户

发布于 2021-09-15 10:14:18

我认为您需要使用如下所示的正则表达式:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69184944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档