繁体   English   中英

Excel索引匹配-具有多个结果的部分字符串

[英]Excel Index Match - Partial strings with Multiple Results

我正在尝试调整在在线示例电子表格中找到的这段代码,但我不太了解。

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

http://i.stack.imgur.com/DyahB.png-Excel输出示例(请注意,第一场和第二场比赛之间没有间隙)

底层算法是:

=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))

现在,我希望查找取而代之的是检索PARTIAL匹配项,此外,像这样水平生成输出:

http://i.stack.imgur.com/ShED0.png-根据部分匹配水平生成输出

我不确定该怎么做。 似乎我会尝试以某种方式尝试更改IF条件,以在部分比赛中返回true,但我无法解决。 请帮忙!

假设“部分匹配”是指以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轻松实现后者

使用IFERROR函数意味着您不需要重复进行错误处理-需要Excel 2007或更高版本

在Barry的代码上稍加构建,我需要做一些调整以供自己使用(当前正在进行的项目)。

我所做的调整:

  1. 返回与我的索引中的搜索条件匹配的单元格
  2. 使单元在二维上可拖动,因此我可以为多个列建立索引以获取特定信息
  3. 使“第n个”计数器为垂直而不是水平(因为我的应用程序是各种各样的数据库,并且每一列都是一个单独的条目。每列的顶部是基于搜索词填充的5行[在我的情况下是商店数])

最终结果是:

=IFERROR(INDEX(A$8:A$295,SMALL(IF(ISNUMBER(SEARCH('Store History'!$F$2,A$8:A$295)),ROW(A$8:A$295)-ROW(A$8)+1),ROWS(A$2:A2))),"")

值得重复的是,这是一个数组公式,需要使用CTRL + SHIFT + ENTER输入

它放置在单元格A2中,并且在水平和垂直方向上都进行了拖动(在我的情况下,水平扩展是在向数据库中添加更多条目时进行的)。

我添加此评论(即使它是一个很长的不活动线程)的目的是,尝试使它成为Google上更相关的搜索结果,以“ excel索引匹配具有多个结果的部分字符串”或其他形式。 我花了数小时的时间寻找该解决方案,并且它功能强大且优雅。 感谢OP,尤其是Barry的代码!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM