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

时间:2017-01-23 14:04:54

标签: excel string

Example representation

我在列A中有一个字符串列表。我想将列G(部分字符串)中的条目与列A中的字符串进行匹配。如果匹配,我想在列B中打印出部分字符串(输出)。

我使用了以下公式 -

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

打印出foundnotfound字符串,但我无法在B列中打印出部分字符串值。

任何帮助都将不胜感激。

1 个答案:

答案 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分割字符串并且不匹配。

Darksky API

为了使公式更具动态性,所以每次在列表中添加或删除子字符串时都不需要编辑它,并且仍然保持最小的引用,我们可以使用另一个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)),"")