从字符串中提取两个名字

Extract two names from a 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;).

感谢任何帮助。

请尝试:

=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)

在单元格 C2 中,输入以下公式:

=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)

这在所有情况下都有效(即不管姓氏和名字组合的长度如何):

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