各位同学,大家好。
今天我们介绍一个比较普遍,但是用vba实现起来又比较麻烦的一个需求。
比如有如下的字符串
100+100/2+100-100/2
现在要把从左到右第5个位置开始的100/2中的100替换为0.1。
如果直接用Replace函数,代码如下:
Sub QQ1722187970() Dim sText As String sText = "100+100/2+100-100/2" Debug.Print VBA.Replace(sText, "100", "0.1") End Sub
得到的结果是
0.1+0.1/2+0.1-0.1/2
也就是全部100都被替换了。
接下来,我们详细学习下Replace函数的语法
Replace(expression,find,*replace[,start[,count[,compare]]]*)
Replace函数可以把一个字符串中的部分字符串批量替换为其它字符串。
其中expression参数表示被查找的字符串,find参数表示要查找的字符串,replace参数表示要替换的字符串,start表示从什么位置开始查找,count表示要替换多少个找到的字符串,compare参数表示是怎么匹配。
根据上述的语法分析,通过设置start参数和count参数可以有选择的从任意位置开始替换任意个匹配到的字符串。
现在我们知道要替换的字符串的起始位置是5,我们可以使用如下的代码:
Sub QQ1722187970() Dim sText As String sText = "100+100/2+100-100/2" Debug.Print Left(sText, 4) & VBA.Replace(sText, "100", "0.1", 5, 1) End Sub
也就是给定的任意一个字符串x,如果要从指定的位置y处开始查找要替换的字符串m,替换为字符串n,可以使用如下的vba通用代码:
Left(sText, y-1) & VBA.Replace(x, m, n, y, 1)
发表评论