用定界字符替换列中的第一个空格

时间:2019-11-19 21:30:54

标签: excel vba

我有一个报告,在一个单元格中包含一堆文本。文本的第一部分是产品#,但长度有所不同。产品编号与其他信息之间用空格分隔。

我正在寻找编写一个宏,该宏将使用定界字符仅替换第一个空格。我通常使用“〜”。然后,这将允许我编写一个文本到列命令的脚本,该命令会将产品编号隔离在一个栏中。

3 个答案:

答案 0 :(得分:2)

您可以使用公式进行此操作:

=LEFT(A1, FIND(" ", A1, 1)-1) & "~" & RIGHT(A1,LEN(A1) - FIND(" ", A1, 1))

将其复制下来。复制/粘贴特殊值。然后将文字转为结果

答案 1 :(得分:1)

使用VBA,可以采用以下方法:

  • 找到第一个空字符串位置并将其写入变量
  • 将字符串的左部分移到该位置并附加替换字符串
  • 从位置到末尾取字符串的右侧部分,然后附加其余部分

这是功能:

Public Function ReplaceFirstSpace(myInput As String, _
                Optional replacement As String = "~") As String

    Dim position As Long
    position = InStr(1, myInput, " ")

    If position = 0 Then
        ReplaceFirstSpace = myInput
    Else
        ReplaceFirstSpace = Left(myInput, position - 1) & _
                            replacement & Right(myInput, Len(myInput) - position)

    End If

End Function

和一些测试:

Sub TestMe()    
    Debug.Print ReplaceFirstSpace("my name is")
    Debug.Print ReplaceFirstSpace("slim shaddy")
    Debug.Print ReplaceFirstSpace("tikitiki")
    Debug.Print ReplaceFirstSpace(" taram")
    Debug.Print ReplaceFirstSpace("tam ")
    Debug.Print ReplaceFirstSpace("")    
End Sub

答案 2 :(得分:1)

使用替换:

=REPLACE(A1,FIND(" ",A1),1,"~")