【问题标题】:Replace function with wildcard用通配符替换函数
【发布时间】:2015-09-05 03:47:40
【问题描述】:

目前我开发了一个比较复杂的DCS工程源文件的操作工具。因此我必须替换某些“TagNames”。

替换适用的代码:

    For g = 8 To amountofreplace 'replace the string with every potential transition
            With Sheets("Compare")
                orgi = .range("L" & g).Value
                copy = .range("J" & g).Value
                tmp_string = Replace(tmp_string, copy, orgi)
             End With

一个例子是 tmp_string = 200TT-50 或 200TX-50 或 200GG-50

这应该过渡到 350TT-50 或 350TX-50 或 350GG-50

所以现在我要添加过渡 200TT --> 350TT 200TX --> 350TX

但我更喜欢应用这种过渡 200 美元 --> 350 美元

$ 表示一个字符 [A-Z],因此当它被应用时,它将直接应用我上面提到的所有转换。

通配符不适用于替换功能。谁有线索?因为我会一直填写不同的过渡。所以 Regex 对我来说似乎不是一个解决方案。

提前致谢,

【问题讨论】:

  • 为什么你认为正则表达式对你不起作用?确实你不能用它改变大小写,但你可以找到小写字母,用uCase() 改变大小写,然后像现在一样将它替换为原始字符串。 (tmp_string=Replace(tmp_string, RegExResult, uCase(RegExResult)) 其中 RegExResult 是正则表达式搜索找到的小写字母)
  • 不清楚您的问题是什么。 Replace(tmp_string, "200","350",1,1) 将任何 200$$ 更改为 350$$ ,无论 $$ 是什么。忘记正则表达式——你甚至没有解释为什么在替换函数中需要通配符。
  • 扩展我之前的评论:对于长度至少为 5 的字符串,“应用过渡 200$$ --> 350$$”和“应用过渡 200 --> 350 英寸?

标签: vba excel replace wildcard


【解决方案1】:

您可以像在中一样使用 VBA.Left()

If VBA.Left(tmp_string, 3) = "200" then 
    tmp_string = "350" & VBA.Right(tmp_string, Len(tmp_string)-3)
end if

【讨论】:

  • 我认为小写字母是错字,不过
猜你喜欢
  • 2014-01-26
  • 2016-11-24
  • 2019-07-27
  • 1970-01-01
  • 2011-09-09
  • 2015-08-24
  • 2015-12-06
  • 1970-01-01
相关资源
最近更新 更多