从文本字符串中获取特定单词之一。 Excel 2016+

Get one of specific words from a text string. Excel 2016+

我有一个需要从文本字符串中获取的单词列表:

(随机单词)

我有多个单元格,周围有随机单词:

我需要一个 excel 函数来从这个单元格中提取我指定的单词。问题是我需要 1 个通用公式来检查字符串中的所有单词,并且 returns 是否匹配列表中的某个单词。

我会使用以下函数从 1 个单元格中提取一个词:

=TRIM(MID(D4,SEARCH(R3,D4),LEN(R3)))

其中 D4 是我需要检查的文本字符串,R3 是我要查找的单词。

我正在尝试使用 IFS 公式组合那些:

=TRIM(IFS($R=MID(D2,SEARCH($R,D2),LEN($R)),$R,$R=MID(D2,SEARCH($R,D2),LEN($R)),$R))

但是,正如你们中的一些人已经知道的那样,它 returns #VALUE! 错误,因为当第一个 SEARCH 公式运行时没有找到任何匹配它 returns #VALUE! 错误和整个函数 returns 它,尽管它实际上可能有 1 个 TRUE 结果。

我在谷歌上搜索了很多,据我所知,我需要使用 TRANSPOSE 公式来创建一个数组,并以某种方式从那里得到结果,但是,我想,我还没有那么聪明。

希望在这方面得到一些帮助。谢谢!

使用INDEX/AGGREGATE:

=INDEX(A:A,AGGREGATE(15,7,ROW($A:$A)/(ISNUMBER(SEARCH($A:$A,C1))),1))

给你:

=INDEX(R:R,AGGREGATE(15,7,ROW($R:$R)/(ISNUMBER(SEARCH($R:$R,D4))),1))

如果 A 列包含带有所需单词的随机单词的单元格,而 C 列列出了所需单词,那么您可以使用:

=LOOKUP(2^15,SEARCH($C:$C,A1,1),$C:$C)

并抄下来。调整范围 $C:$C 以适合您的实际范围。

编辑 解释如下。

我不知道这个公式的来源。我第一次在 MrExcel 上看到这个结构,"Aladin Akyurek" 发布了它。

2^15 部分计算为 32768,这比 Excel 单元格理论上可以容纳的最大字符数多(仅多一个数),即 32767。它是由一个名为 "XOR LX" 从那以后我就一直在使用它。

该构造使用 LOOKUP 函数处理数组和错误的能力,从而实现了一个相当简单的解决方案。