Excel:将string列表与部分string列进行比较,如果匹配,则返回部分string

示例表示

我有列A中的string列表。我想匹配列G中的条目(部分string)与列A中的string。如果匹配,我想打印列B(输出)中的部分string, 。

我用了下面的公式 –

=IF(SUMPRODUCT(--ISNUMBER(SEARCH(G:G,A1)))>0,"found","notfound") 

打印found或未foundstring,但我不能打印出列B中的部分string值。

任何帮助,将不胜感激。

你可以使用INDEX和AGGREGATE来返回行号:

 =IFERROR(INDEX(G:G,AGGREGATE(15,6,ROW($G$2:$G$3)/(ISNUMBER(SEARCH($G$2:$G$3,A2))),1)),"") 

聚合是一个数组types公式,因此引用需要被限制到数据集,而不是一个完整的列引用。

此外,子string必须完全匹配较大的string,在您的示例Please contact agent不会被发现Please contact the agent由于拆分string,并将不匹配。

在这里输入图像说明


为了使公式更具dynamic性,所以不必每次在列表中添加或删除一个子string时都要进行编辑,并且仍然保持最小的引用,我们可以使用另一个INDEX / MATCH来查找列表的结尾并设置这作为参考的结尾。

 =IFERROR(INDEX(G:G,AGGREGATE(15,6,ROW($G$2:INDEX(G:G,MATCH("ZZZZ",G:G)))/(ISNUMBER(SEARCH($G$2:INDEX(G:G,MATCH("ZZZZ",G:G)),A2))),1)),"")