我试图在文本列中搜索文本字符串的一部分并返回第二列。希望通过一个例子更有意义(请注意,这个例子已经完成 - 我无法发布我使用的确切数据,但这与它类似)。
例如:
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来说还是新手。
答案 0 :(得分:0)
好问题!这适用于您提供的示例:
这是一个数组公式,因此需要使用Control + Shift + Enter确认。
它的作用是创建一个Find
的数组并将它们转换为布尔值(NOT((NOT...))
部分。然后--
部分将布尔值转换为{{ 1}}和1
在数组中查找MATCH
的位置,这是我们需要的行。只要数据从第1行开始,它就可以工作,但是可以很容易地修改但是我并不完全确定它满足了你所有的需求。例如,一个潜在的问题是,如果1
列中有两个相同的字符串,它将返回上面的字符串,由于这种方式B
功能有效。
偷偷摸摸,但它可能完成这项工作!