首页 > 解决方案 > 提取短语中的多个单词

问题描述

我有这个公式来提取以给定字符“CCLVL”开头的特定单词。它工作正常,但是,我还需要公式来提取以“GCFAC”或“CLINK”开头的单词</p>

我怎样才能让它找到这些其他词——在我从中提取的文本中,这个词的实例永远不应该超过一个。

=TRIM(LEFT(SUBSTITUTE(MID(A2,FIND("CCLVL",A2),LEN(A2))," ",REPT(" ",100)),100))

描述是否包含CCLVL123456?如果是,这是第 3 方 CCLVL123456 描述是否包含GCFAC4567 如果是,这是第 3 方
描述中是否包含CLINK95182 如果是,这是第 3 方

标签: excelexcel-formula

解决方案


这里的一般想法是使用和一些 xpath 将一个字符串切割成一个单词数组,FILTERXML以仅从该数组中返回我们感兴趣的那些单词。starts-with()幸运的是,我们可以在 or 结构中使用一个名为的函数:

=FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s[starts-with(., 'CCLVL') or starts-with(., 'GCFAC') or starts-with(., 'CLINK')]")

在 Excel365 中,这将返回一个垂直数组,因此您可能希望使用TRANSPOSE()TEXTJOIN()结合使用。另外,如果您没有 Excel365,您可以使用INDEX()按顺序从数组中检索元素。


在下面的示例中,我使用了:

=TEXTJOIN(",",,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1,"?","")," ","</s><s>")&"</s></t>","//s[starts-with(., 'CCLVL') or starts-with(., 'GCFAC') or starts-with(., 'CLINK')]"))

在此处输入图像描述


为了更好地理解上述内容,请参阅这篇文章。


推荐阅读