我正在尝试使用 VBA 替换函数从另一个字符串中删除一个字符串。
我试图从中删除的字符串如下所示,其中包含由 ; 连接的单元格地址
“$B$1;$B$21;$B$2;$C$3;$B$20;$B$201”
我想要删除的字符串是 xxx 的 $B$2
。
替换函数匹配字符串中所有出现的 $B$2
并给出如下输出
$B$1;xxx1;xxx;$C$3;xxx0;xxx01
但是我想在字符串中精确搜索 $B$2
并期望类似的输出
$B$1;$B$21;xxx;$C$3;$B$20;$B$201
我想到的一种方法是拆分 ;
上的字符串(分隔符和循环并查看每个值),但我在这里寻找更直接的解决方案。比如使用模式匹配技术或其他技术。
最佳答案
您可以在替换操作中包含以下;
,以确保仅匹配“完整”引用。您只需要采取预防措施,通过在末尾添加一个虚拟分号来匹配最后一个条目:
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)
关于regex - 使用 VBA 替换的精确匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467057/