在Excel中单元格中的其他单词(Head LM)中将单词拼接在一起
Name Role
John Dowe (Head LM); Moniq Jamese (Lead JK); Larrye Stuarte (Front TR) John Dowe Head LM
我需要能够将[Head LM]从文本的其余部分拆分而不进行肠胃外检查,只需要头部LM。我尝试了几个选项:
=TRIM(RIGHT(SUBSTITUTE(S3," ",REPT(" ",100)),300))
=RIGHT(S3, LEN(S3)-FIND(" ", S3,1)-5) =>resule is : (Lead PM); J
在这两种情况下,()和其他词语中的文字都不干净。
答案 0 :(得分:2)
这假设您想要在括号中获取所有单词,而不仅仅是第一次出现(在您的问题中这不是很明确,所以我假设您对所有这些都感兴趣)。要做到这一点,您需要使用Text-To-Columns或其他类似的东西拆分该单元格,这样您的公式一次只需要处理一个名称/标题。然后复制/转置它,以便每个名称/标题都在它自己的行中。
完成后,您可以使用如下公式:
=SUBSTITUTE(SUBSTITUTE(RIGHT(A1,LEN(A1)-FIND("(",A1,1)+1),"(",""),")","")
这是一张图片:
如果您不需要括号中的所有标题,那么您可以只获取第一个实例,而无需执行任何文本到列/其他步骤/等。根据@ dav1dsm1th的回答。
答案 1 :(得分:2)
如果A1
包含: -
John Dowe (Head LM); Moniq Jamese (Lead JK); Larrye Stuarte (Front TR)
此: -
=LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")",MID(A1,FIND("(",A1)+1,LEN(A1)))-1)
返回: -
Head LM
澄清: -
MID(A1,FIND("(",A1)+1,LEN(A1))
找到A1的一部分,从第一个开始(
FIND(")",MID(A1,FIND("(",A1)+1,LEN(A1)))
计算出第二个字符数
LEFT({...first snippet...},{...second snippet...}-1)
修剪第二个
更新以处理所有名称/标题
A1 your example text
B1 =LEFT(A1,FIND(";",A1))
C1 =LEFT(B1,FIND(" (",B1)-1)
D1 =MID(B1,FIND("(",B1)+1,FIND(")",B1)-(FIND("(",B1)+1))
E1 =MID(A1,LEN(B1)+2,FIND(";",A1)+3)
F1 =LEFT(E1,FIND(" (",E1)-1)
G1 =MID(E1,FIND("(",E1)+1,FIND(")",E1)-(FIND("(",E1)+1))
H1 =MID(A1,LEN(B1)+2+LEN(E1)+1,LEN(A1))
I1 =LEFT(H1,FIND(" (",H1)-1)
J1 =MID(H1,FIND("(",H1)+1,FIND(")",H1)-(FIND("(",H1)+1))
B1
拉出第一个名字块(直到第一个分号)
E1
拉出第二个名字块(直到第二个分号)
H1
拉出第三个名称块
C1
,F1
,I1
从各自的区块中提取名称
D1
,G1
,J1
从各自的区块中取出标题
可以隐藏任何不需要的列 - 只留下所需的列。将这三个块分成B1
,E1
和H1
会使其他单元格中的公式更简单 - 但可以通过替换(例如){{1}中的公式来避免} B1
出现在其他公式中(尽管这显然使这些公式更加复杂)。这样就无需隐藏任何不需要的列 - 因为您只需要计算所需的值。
答案 2 :(得分:1)
将其拆分为许多较小的问题,这是有道理的。
要找到单词的开头,首先找到open paren
=FIND( "(", A1 )
要查找单词的结尾,请找到紧跟打开的paren
的紧密表=FIND( ")", A1, FIND( "(", A1) )
所以有了这些,你可以找到你的话。它在打开的paren之后开始1个字符,并且在两个减去1个字符之间的长度。
= MID( A1, FIND( "(", A1 ) + 1 , ( FIND( ")", A1, FIND( "(", A1) ) - FIND( "(", A1 ) ) - 1 )