我有一个报告,它在一个单元格中包含一堆文本。文本的第一部分是产品#,但长度各不相同。产品编号与其他信息用空格隔开。
我想写一个宏,用分隔字符只替换第一个空格。我通常用"~"。这将允许我编写一个文本到列命令的脚本,该命令将在一列中隔离产品编号。
您可以使用以下公式:
=LEFT(A1, FIND(" ", A1, 1)-1) & "~" & RIGHT(A1,LEN(A1) - FIND(" ", A1, 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
使用REPLACE:
=REPLACE(A1,FIND(" ",A1),1,"~")