查找指定字符的第一个实例,并使用vba获取左值

时间:2018-12-07 16:06:53

标签: vba excel-vba

如何查找特定字符的第一个实例并使用vba获取左值

a =“ \ abc \ 123 \ abc \ test \ test123 \ 123 \ 1248 \ 1234 \ Dec 03”

我需要输出为“ \ abc \ 123 \ abc \ test \ test123 \ 123 \ 1248 \ 1234”,即它应该检测到第一个\并使用VBA从左侧获取剩余的字符串。

谢谢。

3 个答案:

答案 0 :(得分:1)

Sub str()
    Dim a As String
    a = "\abc\123\abc\test\test123\123\1248\1234\Dec 03"

    Dim ret As String
    ret = Left(a, InStrRev(a, "\") - 1)

    Debug.Print ret
End Sub

答案 1 :(得分:0)

我认为您在错误地说明自己的目标。看来您想保留整个字符串, 除外,最后一个部分用\分隔。

此公式应该有效(由于@Tobin):

=LEFT(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))-1)

enter image description here

对于VBA,您可以使用:

Range("B1").FormulaR1C1 = _
    "=LEFT(RC[-1],FIND(""@"",SUBSTITUTE(RC[-1],""\"",""@"",LEN(RC[-1])-LEN(SUBSTITUTE(RC[-1],""\"",""""))))-1)"

答案 2 :(得分:0)

  1. 确保要修改的字符串出现在Sheet1.Range(“ A1”)中。
  2. 结果将显示在Sheet1.Range(“ A2”)。

尝试:

Option Explicit

Sub test()

    Dim NoCh As Integer
    Dim i As Long, LP As Long
    Dim str As String

        str = Sheet1.Range("A1").Value
        NoCh = Len(str)


        For i = NoCh To 1 Step -1
            If Mid(str, i - 1, 1) = "\" Then
                LP = i
                Exit For
            End If

        Next i

        Sheet1.Range("A2").Value = Left(str, LP - 2)

End Sub