[英]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的代码上稍加构建,我需要做一些调整以供自己使用(当前正在进行的项目)。
我所做的调整:
最终结果是:
=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.