Excel VBA-删除*word之后的字符串内容*
我试图在字符串中包含的某个单词之前删除字符串内容。比如说Excel VBA-删除*word之后的字符串内容*,vba,excel,Vba,Excel,我试图在字符串中包含的某个单词之前删除字符串内容。比如说 master_of_desaster@live.de 我想用VBA来代替它 master_of_desaster “单词”(@)后面的所有内容都应删除,包括“单词”本身 我找到了一个类似的话题,但他问的正好相反。=split(“音乐大师”)_desaster@live.de“,“@”)(0) 结果:德萨斯特大师 多亏了有点老套但速度很快(大多数Windows API接受以零结尾的字符串) 我通常使用拆分方法,但有以下限制: ret =
master_of_desaster@live.de
我想用VBA来代替它
master_of_desaster
“单词”(@)后面的所有内容都应删除,包括“单词”本身
我找到了一个类似的话题,但他问的正好相反。=split(“音乐大师”)_desaster@live.de“,“@”)(0)
结果:德萨斯特大师
多亏了有点老套但速度很快(大多数Windows API接受以零结尾的字符串)
我通常使用拆分方法,但有以下限制:
ret = Split("master_of_disaster@live.de", "@", 2)(0)
只是为了好玩-一个正则表达式的方法
Public Sub reg()
Dim re_pattern As String
Dim re As RegExp
Dim email As String
Dim match As Object
Set re = New RegExp
email = "master_of_desaster@live.de"
re_pattern = "(.*)@.*"
With re
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = re_pattern
End With
Set match = re.Execute(email)
Debug.Print match.Item(0).SubMatches(0)
End Sub
使用
Instr
功能查找@
。然后,只需使用原始字符串的Left
,直到Instr
的结果。如果您在单元格上执行此操作,简单的查找/替换可能最快。如果您向其添加注释,则我将接受它作为解决方案。(我理解,但其他人会理解吗?)
ret = Split("master_of_disaster@live.de", "@", 2)(0)
Public Sub reg()
Dim re_pattern As String
Dim re As RegExp
Dim email As String
Dim match As Object
Set re = New RegExp
email = "master_of_desaster@live.de"
re_pattern = "(.*)@.*"
With re
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = re_pattern
End With
Set match = re.Execute(email)
Debug.Print match.Item(0).SubMatches(0)
End Sub
ret = evaluate("left(" & string & ", search(""@"", " & string & ") - 1)")