2016-02-29 2 views
0

Я пытаюсь сделать макрос для экспорта столбец имен (столбец А) в .csvУдаление текста после 2-го места в Excel VBA

Примеры,

  1. MARY JANE
  2. THOMAS LEE
  3. РАЯН CHRISTOPHER SMITH

То, что я хочу сделать, это принимать только первые 2 части имени, так как некоторые имена имеют более чем 3-х частей, так что в конце концов, как это

  1. MARY JANE
  2. THOMAS LEE
  3. РАЯН CHRISTOPHER

Я могу сделать это с нормальной функции клеток, однако я могу Кажется, он работает с VBA.

ответ

1

Вы можете использовать Instr, чтобы найти символ в строке, с указанной начальной точки. Поэтому использовать его в два раза, 2-й раз, начиная после первой найденной позиции

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 в Immediate Window