1

我目前正在努力寻找可以解决我的问题的公式。

以下是现状:

  1. 在工作表 1 的 A 列中,我有一组字符串,例如:

/search.action?gender=men&brand=10177&tag=10203&tag=10336
/search.action?gender=women&brand=11579&tag=10001&tag=10138
/search.action?gender=men&brand=12815&tag=10203&tag=10299
/search.action?gender=women&brand =1396&tag=10203&tag=10513
/search.action?gender=women&brand=11&tag=10001&tag=10073
/search.action?gender=women&brand=1396&tag=10203&tag=10336
/search.action?gender=women&brand=13

  1. 在工作表 2 的 A 列中,我有一组字符串,例如:

品牌=10177
品牌=12815
品牌=13
品牌=1396
品牌=11579

  1. 最后,在工作表 1 中,B 列将成为我的“过滤器”,其中包含我正在努力寻找的公式。我的公式的目标是检测表 1 中的任何字符串是否存在表 2 中的一个字符串(作为完全匹配!)。事实上,现在它只能找到近似匹配。如您所见,第 5 行不应返回任何内容。但按照我目前的公式,它确实如此。

这是公式:

{=IFERROR(INDEX('Sheet 2'!$A$1:$A$5;MATCH(1;COUNTIF(A1;"*"&'Sheet 2'!$A$1:$A$5&"*");0));"")}

对此事有任何想法吗?
请注意,我不想使用 VBA、宏,而只想使用公式。

非常感谢你的帮助!

4

2 回答 2

1

我猜以下将解决您的问题:

=VLOOKUP(MID(A2,FIND("&",A2)+1,FIND("&",A2,FIND("&",A2)+1)-FIND("&",A2)-1),Sheet2!A:A,1,FALSE)

基本上使用查找功能,我已经确定了“&”符号之间的字符串的开头和长度。并用于 vlookup。

另一点要提的是,这个公式只寻找前 2 个“&”符号。

于 2015-01-20T17:14:11.823 回答
0

为了完整起见,这是基于此答案的另一种解决方案

=INDEX(Sheet2!$A$1:$A$5,MAX(IF(ISERROR(FIND(Sheet2!$A$1:$A$5,A1)),-1,1)*(ROW(Sheet2!$A$1:$A$5)-ROW(Sheet2!$A$1)+1)))

这有点笼统,有多少搜索标签并不重要。

但是,就目前而言,它将在第二张表中匹配brand=13,在第一张表中匹配brand=1396。为避免这种情况,您可以在搜索字符串中添加 & 符号:-

=INDEX(Sheet2!$A$1:$A$5,MAX(IF(ISERROR(FIND(Sheet2!$A$1:$A$5&"&",A1&"&")),-1,1)*(ROW(Sheet2!$A$1:$A$5)-ROW(Sheet2!$A$1)+1)))

如果不匹配,此公式将引发 #VALUE 错误:为避免这种情况,您需要在其周围放置一个 IFERROR 语句:-

=IFERROR(INDEX(Sheet2!$A$1:$A$5,MAX(IF(ISERROR(FIND(Sheet2!$A$1:$A$5&"&",A1&"&")),-1,1)*(ROW(Sheet2!$A$1:$A$5)-ROW(Sheet2!$A$1)+1))),"")

所有这些都是数组公式。

在此处输入图像描述

于 2015-01-21T11:56:57.020 回答