我想更改一个特定的文本,所以我需要找到所有“;”字符并将它们更改为“$”,但前提是它们位于括号中。
所以,可能有几种情况:
示例 1
文本(没关系;不行);好的
应该:
文本(没关系$ 不行);好的
示例 2
文本(没关系;不行);好的(tekst;)好的
应该:
文本(没关系$ 不行);好的 (tekst$) 好的
示例 3
文本(没关系;(好吧;)不行);
应该:
文本(没关系$(ok$)不行);
所以我开始替换字符串代码,但问题是我的代码现在甚至在“)”之后也替换了字符,我不希望这样。
我应该以某种方式计算需要更改的字符串并设置起始位置并仅更改它们吗?但是问题是如果我们有更多的括号,它将不起作用。
最好的方法是什么?
Sub Removetext()
s = Range("A1").Value
Dim start As Integer
Dim end1 As Integer
start = InStr(1, s, "(")
end1 = InStr(1, s, ")")
s = Left(s, start - 1) & Replace(s, ";", "$", start)
End Sub
最佳答案
这是一种避免正则表达式的方法,因为我使用它的程度不足以记住如何不费力气地做到这一点。
Sub x()
Dim i As Long, lb As Long, rb As Long, r As Range
Range("A1:A4").Copy Range("B1")
For Each r In Range("B1:B4")
For i = 1 To Len(r.Value)
If Mid(r, i, 1) = "(" Then lb = lb + 1
If Mid(r, i, 1) = ")" Then rb = rb + 1
If Mid(r, i, 1) = ";" Then
If lb > 0 And rb < lb Then r.Characters(i, 1).Text = "$"
End If
Next i
Next r
End Sub
关于excel - 仅更改部分单元格中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65090012/