Excel VLOOKUP和SEARCH组合

时间:2014-05-22 15:45:12

标签: excel search excel-vba substring vba

我试图在文本列中搜索文本字符串的一部分并返回第二列。希望通过一个例子更有意义(请注意,这个例子已经完成 - 我无法发布我使用的确切数据,但这与它类似)。

例如:

A                            D               E

Really good dog             Good dog         text1
red dog collar              Brown dog        text2
Brown Toy dog               big dog          text3
                            dog collar       text4
                            dog walking      text5


 A                    B       

Really good dog       text1
red dog collar        text4
Brown Toy dog         Not Found

因此搜索列D以提供与列A中第一个值的匹配,如果匹配则返回E列中的相应文本,如果没有匹配则返回"未找到& #34 ;.正如您可以从预期结果中看到的那样,B列,字符串" Good dog"出现在"非常好的狗"所以"真的好狗"得到" text1"的结果。请注意,情况并不重要。

我一直在玩

=(VLOOKUP("*"&DCE!X2&"*",Lookups!$K$2:$L$19,2,FALSE))

不起作用,因为它不是单元格中可以与值匹配的所有文本字符串。 我尝试过使用

=IF(SUMPRODUCT(--(NOT(ISERR(SEARCH($A$1:$A$3,C1)))))>0,"1","") 

如果我可以在搜索范围内与单元格交换范围,那将会很棒。

我知道这些公式的MATCH版本,但我还没有能够让它工作。

我工作的唯一公式是一个巨大的嵌套IF语句

=IF(ISNUMBER(SEARCH(Lookups!$K$2,X2)),Lookups!$L$2,IF(ISNUMBER(SEARCH(Lookups!$K$3,X2)),Lookups!$L$3,IF(ISNUMBER(SEARCH(Lookups!$K$4,X2)),Lookups!$L$4,IF(ISNUMBER(SEAR......

我不想创建100多个要搜索的项目。这会看到搜索列(列D)中的第一个值是否包含在查找字符串(列A)中,如果是,则返回结果(列E),如果不是,则返回"未找到&# 34。

此外,上述公式中的单元格引用并不直接与示例相关,它们仅仅是我尝试过的公式的示例(我已在本网站的各个帖子中找到)。 / p>

任何建议都将不胜感激。很抱歉,如果难以理解,我对Stackoverflow来说还是新手。

1 个答案:

答案 0 :(得分:0)

好问题!这适用于您提供的示例:

enter image description here

这是一个数组公式,因此需要使用Control + Shift + Enter确认。

它的作用是创建一个Find的数组并将它们转换为布尔值(NOT((NOT...))部分。然后--部分将布尔值转换为{{ 1}}和1在数组中查找MATCH的位置,这是我们需要的行。只要数据从第1行开始,它就可以工作,但是可以很容易地修改但是我并不完全确定它满足了你所有的需求。例如,一个潜在的问题是,如果1列中有两个相同的字符串,它将返回上面的字符串,由于这种方式B功能有效。

偷偷摸摸,但它可能完成这项工作!