按字段将完整string分隔为名字,中间名和姓氏

使用Excel,我怎样才能分开一个完整的名称string,例如:

Juan I. Dela Cruz Jojo Rambo Unlce Sam Mary Ann J. San Jose 

input“Firstname”,“Middle Initial”和“Lastname”的输出:

 +----------+----------------+----------+ |Firstname | Middle Initial | Lastname | +----------+----------------+----------+ |Juan | I. | Dela Cruz| +----------+----------------+----------+ |Jojo | | Rambo | +----------+----------------+----------+ |Uncle | | Sam | +----------+----------------+----------+ |Mary Ann | J. | San Jose | +----------+----------------+----------+ 

In Firstname: =IFERROR(LEFT(A1,FIND(".",A1)-3),LEFT(A1,FIND(" ",A1)-1))
在Middle Initial =IFERROR(MID(A1,FIND(".",A1)-1,2),"")
In Lastname =IFERROR(RIGHT(A1,LEN(A1)-FIND(".",A1)-1),RIGHT(A1,LEN(A1)-FIND(" ",A1)))

每个复制到适合可能是一个开始(为提供的例子),但由于@lurker提到的原因,这不可能是一个全面的解决scheme。

最初的想法是使用“数据”选项卡下的“ 文本到列 ”,空格作为分隔符。 然而,以前的评论提出了一个很好的观点来确定你的名字。

如果你没有很多名字的例子,比如你的Mary Ann J. San Jose的例子,那么文本到列就可以工作 – 你可以手动合并你的exception值。

工作了几天之后,这就是我所想的。 这也适用于Excel 2000。 似乎在我正在使用的数据集上运行良好,格式为“Last Name”,“First Name”,“MI”。

我的名字字段在B列,我的公式在H,I和J

 =LEFT(B2,SEARCH(",",B2)-1) 

名字

 =IF(LEN(MID(B2,LEN(H2)+3,LEN(B2)-LEN(H2)))-LEN(SUBSTITUTE(MID(B2,LEN(H2)+3,LEN(B2)-LEN(H2))," ",""))>0,MID(B2,LEN(H2)+3,LEN(B2)-LEN(H2)-LEN(RIGHT(B2,LEN(B2)-FIND("|",SUBSTITUTE(B2," ","|",LEN(B2)-LEN(SUBSTITUTE(B2," ",""))))))-3),MID(B2,LEN(H2)+3,LEN(B2)-LEN(H2))) 

中间Inital

 =IF(RIGHT(B2,1)=".",MID(B2,LEN(H2)+LEN(I2)+3,1),MID(B2,LEN(H2)+LEN(I2)+4,1)) 

到目前为止,这已经处理了我可以抛出的任何数据。

祝你好运