我在列A中有一个字符串列表。我想将列G(部分字符串)中的条目与列A中的字符串进行匹配。如果匹配,我想在列B中打印出部分字符串(输出)。
我使用了以下公式 -
=IF(SUMPRODUCT(--ISNUMBER(SEARCH(G:G,A1)))>0,"found","notfound")
打印出found
或notfound
字符串,但我无法在B列中打印出部分字符串值。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以将INDEX与AGGREGATE一起使用以返回行号:
=IFERROR(INDEX(G:G,AGGREGATE(15,6,ROW($G$2:$G$3)/(ISNUMBER(SEARCH($G$2:$G$3,A2))),1)),"")
Aggregate是一个数组类型公式,因此需要将引用约束到数据集而不是完整的列引用。
此外,子字符串必须在较大的字符串中完全匹配,在您的示例Please contact agent
中找不到Please contact the agent
因为the
分割字符串并且不匹配。
为了使公式更具动态性,所以每次在列表中添加或删除子字符串时都不需要编辑它,并且仍然保持最小的引用,我们可以使用另一个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)),"")