Excel - 在字符串中查找文本并返回该文本

Excel - 在字符串中查找文本并返回该文本

例如,我有一长串句子(我喜欢冰淇淋、我喜欢苹果、我喜欢狗等),我需要搜索每个句子,看看每个句子是否包含“奶酪、香蕉或猫”并且只有这三种东西 - 这就是我所关心的。如果句子没有说这三个词,我需要结果或返回其他内容,但如果句子包含这三个词中的任何一个,我需要结果返回那个词。- 如果句子是“我喜欢奶酪”,公式应该返回“奶酪”等等。我尝试了许多不同的公式,要么不起作用,要么说我的条件太多。请帮忙

答案1

看看这与您所寻找的有多接近。

在此处输入图片描述 点击图片查看大图

我可能假设了您没有的潜在复杂性,所以这可能不是最简单的解决方案。

A 列包含句子。我假设您的示例恰好在每种​​情况下都将目标词放在末尾,但该词可能出现在句子的任何地方。如果它只出现在末尾,则有更简单的方法来查找它。我还假设大小写可能会有所不同,例如如果该词出现在句子的开头。

D 列包含目标单词的列表。将它们放在列表中可以简化事情,因为大多数解决方案都需要使用该单词进行某种查找,然后再次使用它来获取结果。该列表还简化了更改目标的过程,而无需更改所有公式。如果您真的不想要列表,甚至隐藏它也不够,您可以对公式中的值进行硬编码,而不是使用单元格引用。

B 列包含结果。我假设您只关心目标单词而不是其大写形式(无论它在句子中出现的位置或大小写形式如何,您都希望得到相同的结果)。如果没有匹配项(实际上包含空值),此公式将单元格留空。这比在每个单元格中粘贴某种结果更有效地找到匹配的记录。如果您希望在这些情况下显示其他内容,则公式将更复杂。

B1 中的公式(根据需要将其复制到列中,或预先填充比所需更大的范围)是:

=IF(ISNUMBER(SEARCH($D$1,A1)),$D$1,"")&IF(ISNUMBER(SEARCH($D$2,A1)),$D$2,"")&IF(ISNUMBER(SEARCH($D$3,A1)),$D$3,"")

这只会搜索(不区分大小写)每个目标单词。如果找到该单词,它会将其添加到结果字符串中。否则,它会添加一个 null。&符号将每个目标的结果连接起来。因此,结果字符串将包含 null 或匹配的单词。

由于问题表明您只有几个目标词,因此这种方法并不太难处理。如果您实际上可以拥有更长的目标词列表,那么使用不同的方法可能是有意义的。

答案2

如果您在 A 列上写入来自 A1 的文本

=RIGHT(SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")));LEN(A1)-FIND("~";SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")))))

您的解决方案是

这就是它的样子

答案3

=IF(OR(RIGHT(SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")));LEN(A1)-FIND("~";SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";""))))) = "猫";RIGHT(SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")));LEN(A1)-FIND("~";SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";""))))) = "香蕉";RIGHT(SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")));LEN(A1)-FIND("~";SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";""))))) = "奶酪");RIGHT(SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";"")));LEN(A1)-FIND("~";SUBSTITUTE(A1;" ";"~";LEN(A1)-LEN(SUBSTITUTE(A1;" ";""))))); "")

这看起来很疯狂,但它有效!我只是修改了上面的第一个答案。

相关内容