Excel 删除字符串中两个特定字符之间的文本
我有一列数据,格式如下: xxxx(yyyy) 我想删除括号内的内容以及括号本身。尝试以下操作:Excel 删除字符串中两个特定字符之间的文本,excel,vba,Excel,Vba,我有一列数据,格式如下: xxxx(yyyy) 我想删除括号内的内容以及括号本身。尝试以下操作: =LEFT(A1,FIND("(",A1)-1) 选择要处理并运行此短宏的单元格: Sub DataGrabber() Dim r As Range For Each r In Intersect(ActiveSheet.UsedRange, Selection) If InStr(1, r.Value, "(") > 0 Then r
=LEFT(A1,FIND("(",A1)-1)
选择要处理并运行此短宏的单元格:
Sub DataGrabber()
Dim r As Range
For Each r In Intersect(ActiveSheet.UsedRange, Selection)
If InStr(1, r.Value, "(") > 0 Then
r.Value = Split(r.Value, "(")(0)
End If
Next r
End Sub
我将为此作业使用正则表达式:
Sub DeleteMatches()
Dim cell As Range, re As Object
' define the regular expression to match "(...)" '
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\([^)]*\)" ' matches "(...)" '
' iterate and clean each cell in range "C2:C100" '
For Each cell In Range("C2:C100")
cell.Value = re.Replace(cell.Value, Empty)
Next
End Sub
您可以使用Regexp在一个字符串中方便地进行多个替换 干净的绳子
不,它确实工作正常。我只是再次尝试,并在excel中运行它。确保您正确复制了代码。我单击了上面的“运行代码段”,得到了
错误:{“message”:“SyntaxError:missing;before语句”,“filename”:http://stacksnippets.net/js“,“lineno”:12,“colno”:16}
这是上载到dropbox的文件,在使用此代码之前,您需要先运行一个检查,以确保有一个括号,并且这只适用于第一次出现的情况,其余的将以一种很难找到任何其他发生情况的方式进行分解。但是对于一次出现很好。是的,但这只是一个示例,演示了如何非常容易地将字符串拆分为数组。在剩下的字符串上加“)”键,就得到了第二部分。但是上面的例子不是这样的,这就是我提供该代码的原因。我用了1000个小时的代码处理excel文件,我总是发现拆分字符串非常有用。问题确实要求VBA。@brettdj该问题用VBA和excel标记。这道题中没有一个词可以表示一个词胜过另一个词。OP可能只是假设只有vba才有可能。如果OP在哪里做出区分,我会很高兴地删除答案。
Sub DeleteMatches()
Dim cell As Range, re As Object
' define the regular expression to match "(...)" '
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\([^)]*\)" ' matches "(...)" '
' iterate and clean each cell in range "C2:C100" '
For Each cell In Range("C2:C100")
cell.Value = re.Replace(cell.Value, Empty)
Next
End Sub
Sub Test()
Debug.Print CleanStr("xxxx(yyyy)")
Debug.Print CleanStr("and me ()")
Debug.Print CleanStr("and me ()` second string(aaa)")
End Sub
Function CleanStr(strIn As String) As String
Dim objRegex As Object
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
.Pattern = "\([^)]*\)"
.Global = True
CleanStr = .Replace(strIn, vbNullString)
End With
End Function