如何删除excel vba中字符串中的第一个逗号

dws*_*ein 0 excel parsing vba

如果我有一个字符串:"foo, bar" baz, test, blah,如何删除特定的逗号,即不是全部,只是我选择的一个?

使用ReplaceINSTR看起来我不知道逗号在哪里.问题是,如果它出现在引号之间,我只想删除逗号.

所以,我可能想要删除第一个逗号而我可能不会.

更清楚地说,如果一组引号之间有逗号,我需要删除它.如果没有,那就无所事事了.但是,我不能只删除所有逗号,因为我需要字符串中的其他逗号.

Kaz*_*wor 5

以这种方式尝试使用Regexp:

Sub foo()
    Dim TXT As String
    TXT = """foo, bar"" baz, test, blah"

    Debug.Print TXT

    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")

    With objRegExp
        .Global = True  '
        .Pattern = "(""\w+)(,)(\s)(\w+"")"

    Debug.Print .Replace(TXT, "$1$3$4")

    End With


End Sub
Run Code Online (Sandbox Code Playgroud)

它对您提供的样本值按预期工作,但可能需要通过更改.Pattern更复杂的文本进行其他调整.

编辑如果要将此解决方案用作Excel函数而不是使用此代码:

Function RemoveCommaInQuotation(TXT As String)

    Dim objRegExp As Object
    Set objRegExp = CreateObject("vbscript.regexp")

    With objRegExp
        .Global = True 
        .Pattern = "(""\w+)(,)(\s)(\w+"")"

    RemoveCommaInQuotation = .Replace(TXT, "$1$3$4")

    End With


End Function
Run Code Online (Sandbox Code Playgroud)