在Excel VBA中第二个空格后删除文本

时间:2016-02-29 09:50:03

标签: excel vba excel-vba

我正在尝试创建一个宏来将一列名称(列A)导出为.csv

示例,

  1. MARY JANE
  2. THOMAS LEE
  3. RYAN CHRISTOPHER SMITH
  4. 我想要做的只是取名字的前两部分,因为有些名字超过3个部分,所以它最终会像这样

    1. MARY JANE
    2. THOMAS LEE
    3. RYAN CHRISTOPHER
    4. 我能够使用正常的单元格功能,但是我似乎无法使其适用于VBA。

1 个答案:

答案 0 :(得分:1)

您可以使用Instr从指定的起点查找字符串中的字符。所以使用它两次,第二次在第一个找到位置后开始

Function TwoWords(str As String) As String
    Dim i As Long
    ' remove any multiple or leading /trailing spaces
    str = Application.WorksheetFunction.Trim(str)

    ' locate 2nd space if it exists
    i = InStr(str, " ")
    If i > 0 Then
        i = InStr(i + 1, str, " ")
        If i > 0 Then
            str = Left$(str, i - 1)
        End If
    End If

    TwoWords = str
End Function

Sub Demo()
    Dim str As String
    ' For Demo
    str = TwoWords("RYAN CHRISTOPHER SMITH")
    Debug.Print str

    str = TwoWords("THOMAS LEE")
    Debug.Print str
End Sub

在立即窗口中查看Demo的结果