从string中提取两个名字

在Excel中,假设

A2 = Last_Name1 First_Name1 MI1;#8;#Last_Name2 First_Name2 MI2;#102 

在B2中,我想看到列出的第一个人的姓氏,名字和中间首字母。 所以我使用这个:

 =MID(A2,1,FIND(";",A2,1)-1) 

结果:Last_Name1 First_Name1 MI1

在C2中,我需要写什么来查看列出的第二个人的姓氏,名字和中间首字母。

结果:Last_Name2 First_Name2 MI2

我的想法是从右开始,把第二个“#”和“;” (#Last_Name2 First_Name2 MI2;)。

任何帮助表示赞赏。

在C2单元格中input此公式:

 =LEFT(MID(A2,2+FIND("|",SUBSTITUTE(A2,";","|",2)),99),LEN(MID(A2,2+FIND("|",SUBSTITUTE(A2,";","|",2)),99))-5) 

由于@pnuts的概念,我认为这个版本更好

 =LEFT(MID(A2,1+FIND("|",SUBSTITUTE(A2,"#","|",2)),99),FIND(";",MID(A2,1+FIND("|",SUBSTITUTE(A2,"#","|",2)),99))-1) 

请尝试:

 =LEFT(MID(A2,1+FIND("#",A2)+FIND("#",MID(A2,FIND("#",A2)+1,99)),99),FIND(";",MID(A2,1+FIND("#",A2)+FIND("#",MID(A2,FIND("#",A2)+1,99)),99))-1) 

这种工作在所有情况下(即,不论Last&First Names组合的长度如何):

 =MID(LEFT($A2, -1+FIND("|",SUBSTITUTE($A2,";","|",3))), 1+FIND("|",SUBSTITUTE($A2,"#","|",2)),LEN($A2))