【问题标题】:Excel: Search for many text strings in a cell, and return all positive resultsExcel:在一个单元格中搜索多个文本字符串,并返回所有肯定的结果
【发布时间】:2016-07-27 22:53:07
【问题描述】:

我需要一个函数来搜索单元格中的许多关键字文本字符串(型号)并返回它找到的每个型号。在我所有的研究中,我只找到了提供一个匹配关键字的解决方案,但我希望 all 匹配关键字。

仅找到一个关键字的解决方案示例:Excel: Search for a list of strings within a particular string using array formulas?

我想要的示例:

要在 (A1) 中搜索的单元格包含:

A-007858 CustomerCompanyName D1001、S1135、BE60 和 R235 新 6 和 8 包

搜索关键字(在单独的工作表 A1-A70 上):

A32:D1001

A43:S1135

A6:BE60

A64:R235

所需的输出: 找到的每个型号(D1001、S1135、BE60、R235)显示在搜索到的单元格 (A1) 旁边的单元格 B1、C1、D1 和 E1 中。型号的顺序并不重要。我更喜欢 Excel 函数解决方案而不是 VBA。

【问题讨论】:

  • 多少个单元格包含要搜索的文本?只有 A1 或 A1:A???
  • 几千个单元格包含要搜索的文本
  • 那么您可能需要 VBa。数组公式会因为这么多公式而陷入困境。

标签: excel


【解决方案1】:

将此公式放入B1并复制:

=IFERROR(INDEX(Sheet2!$A$1:$A$70,AGGREGATE(15,6,ROW(Sheet2!$A$1:$A$70)/(ISNUMBER(SEARCH(Sheet2!$A$1:$A$70,$A1))),COLUMN(A:A))),"")

Sheet2 替换为您的列表所在工作表的名称。

它将按照另一张纸上的列表顺序。

【讨论】:

  • 谢谢斯科特!我自己不会想到这一点,但现在我明白了你的公式背后的逻辑。
  • 另外,这个公式似乎并没有显着降低我的机器速度。我正在运行相当多的 RAM。但是,如果您想提供 VBA 解决方案,我不会不高兴 :)
  • 我认为如果一个公式有效并且在开销上是可以接受的,为什么要重新发明轮子。如果您想尝试,请随意。我会将两个列表加载到带有第三个数组的数组中以供输出。然后首先循环遍历句子列表,然后使用 instr 遍历查找列表进行测试。然后加载匹配的二维数组。
【解决方案2】:

如果你没有太多的关键字,你可以很简单地做到这一点:

B1 = IF(ISERROR(SEARCH("D1001",A1)),"","D1001")

您可以在其中将“D1001”替换为对另一张工作表中单元格的引用。 C1:E1 类似。

如果你有很多,那么你需要像@ScottCraner 建议的那样参与更多的事情。

【讨论】:

  • 谢谢亚历克西斯!是的,我曾考虑过该解决方案,但我正在搜索 70 多个关键字,因此会变得非常麻烦。感谢您的意见
猜你喜欢
  • 2018-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2019-02-28
  • 2015-08-12
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多