Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-删除*word之后的字符串内容*_Vba_Excel - Fatal编程技术网

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)")