我正在尝试使用VBA替换函数从另一个字符串中删除字符串。
我想要删除的字符串如下所示,其中包含由x
连接的单元格地址
if
我想删除的字符串是;
xxx。
替换函数匹配字符串中所有出现的"$B$1;$B$21;$B$2;$C$3;$B$20;$B$201"
并给出输出如下
$B$2
但是我想在字符串中准确搜索$B$2
并期望输出
$B$1;xxx1;xxx;$C$3;xxx0;xxx01
我可以想到这样做的一种方法是将$B$2
上的字符串拆分(分隔符和循环并查看每个值),但我在这里寻找更直接的解决方案。就像使用模式匹配技术或其他东西一样。
答案 0 :(得分:3)
您可以在替换操作中包含以下;
,以确保只匹配“完整”引用。您只需要采取预防措施以匹配最后一个条目,最后在末尾添加一个虚拟分号:
s = "$B$1;$B$21;$B$2;$C$3;$B$20;$B$201"
find = "$B$2"
repl = "xxxx"
result = Replace(s & ";", find & ";", repl & ";")
result = Left(result, Len(result)-1) ' Remove the final semicolon
虽然这适用于您的情况,但在更一般的练习中,您还需要测试前面的分隔符,然后最后两行看起来像这样:
result = Replace(";" & s & ";", ";" & find & ";", ";" & repl & ";")
result = Mid(result, 2, Len(result)-2)
答案 1 :(得分:2)
Function myReplace(strng As String, findStr As String, replacementStrng As String)
myReplace = Replace(strng & ";", findStr & ";", replacementStrng & ";")
myReplace = Left(myReplace, Len(myReplace) - 1)
End Function
在你的" main"中被利用子如下:
strng = "$B$1;$B$21;$B$2;$C$3;$B$20;$B$201"
MsgBox myReplace(strng, "$B$2", "xxx")