Excel:将string列表与部分string列进行比较,如果匹配,则返回部分string
我有列A中的string列表。我想匹配列G中的条目(部分string)与列A中的string。如果匹配,我想打印列B(输出)中的部分string, 。
我用了下面的公式 –
=IF(SUMPRODUCT(--ISNUMBER(SEARCH(G:G,A1)))>0,"found","notfound")
打印found
或未found
string,但我不能打印出列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)),"")