获取以逗号和空格分隔的前两个单词并交换顺序

时间:2018-07-03 17:39:01

标签: excel substitution

我有一个字符串(在H2中):

LARSON, JOHN (PIZZA MAKERS INC)

...而且我只希望该名称产生:

JOHN LARSON

到目前为止,我有以下内容(在I2中)仅用于获取名称,但需要交换订单。

 =SUBSTITUTE(LEFT(H2,FIND(" ",H2,FIND(" ",H2)+1)-1),",","")

并在第二列(J2)中交换以下内容,但必须有一个更简洁的方法。

 =MID(I2&" "&I2,FIND(" ",I2)+1,LEN(I2))

有任何线索或提示吗?在此先感谢!

3 个答案:

答案 0 :(得分:0)

这很丑陋,但只要格式始终为<LASTNAME>, <FIRSTNAME> <WHATEVER>,它就可以完成工作:

=MID(A1, FIND(",",A1, 1)+2, FIND(" ", A1, FIND(",", A1, 1)+2) - FIND(",", A1, 1) - 2) & " " & LEFT(A1,FIND(",", A1, 1)-1)

使用UDF在VBA中解决此问题可能更干净:

Function getName(bigNameString As String) As String
    Dim lastName As String, firstName As String
    lastName = Left(Split(bigNameString, " ")(0), Len(Split(bigNameString, " ")(0)) - 1)
    firstName = Split(bigNameString, " ")(1)
    getName = firstName & " " & lastName
End Function

只需将其粘贴在新模块中,保存工作簿(带.xlsm后缀),您就可以在单元格中使用它:

=getName(A1)

答案 1 :(得分:0)

尝试

=TRIM(LEFT(SUBSTITUTE(REPLACE(A2, 1, FIND(",", A2)+1, TEXT(,)), " ", REPT(" ", LEN(A2))), LEN(A2))&LEFT(A2, FIND(",", A2)-1))

答案 2 :(得分:0)