excel - 仅更改部分单元格中的特定字符

标签 excel vba

我想更改一个特定的文本,所以我需要找到所有“;”字符并将它们更改为“$”,但前提是它们位于括号中。
所以,可能有几种情况:
示例 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
enter image description here

关于excel - 仅更改部分单元格中的特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65090012/

相关文章:

arrays - 如何在 VBA 中合并两个数组?

vba - 将 csv 文件读入文本文件

excel - 当用户编辑单元格时,为什么此 VBA Worksheet_Change 不会触发?

c#从excel文件中获取值列表

arrays - 将数组写入范围。只获取数组的第一个值

excel - DAO.DBEngine 类不再在使用 Windows 10 的 MS Access 2016 中注册

excel - 为什么 .autoFill 会导致 Excel 崩溃?

excel - vba 打开文件夹中最近的文件

vba - Excel VBA 单元格格式,If 语句

excel - 使用 UTF-8 导入 CSV