Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Excel VLOOKUP与搜索组合_Search_Excel_Substring_Vba - Fatal编程技术网

Search Excel VLOOKUP与搜索组合

Search Excel VLOOKUP与搜索组合,search,excel,substring,vba,Search,Excel,Substring,Vba,我试图在一列文本中搜索文本字符串的一部分,然后返回第二列。希望这个例子会更有意义(请注意,这个例子是虚构的——我无法公布我使用的确切数据,但这与之类似) 例如: A D E Really good dog Good dog text1 red dog collar Brown dog text2 Brown Toy dog

我试图在一列文本中搜索文本字符串的一部分,然后返回第二列。希望这个例子会更有意义(请注意,这个例子是虚构的——我无法公布我使用的确切数据,但这与之类似)

例如:

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列中的相应文本,如果没有匹配,则返回“Not Found”。正如您从预期结果B列中看到的,字符串“Good dog”出现在“Really Good dog”中,因此“Really 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","") 
如果我能在搜索范围内与单元格交换范围,那就太好了

我知道这些公式有一个匹配版本,但我也没能让它起作用

我使用的唯一公式是一个巨大的嵌套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列),如果不是,则返回“未找到”

此外,上述公式中的单元格引用与示例没有直接关系,它们只是我一直在尝试的公式的示例(我在本网站的各种帖子上都找到了)


如有任何建议,将不胜感激。很抱歉,如果这很难完成,我是Stackoverflow的新手。

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

这是一个数组公式,需要Control+Shift+Enter确认

它所做的是创建一个
Find
数组,并将它们转换为布尔值(
NOT((NOT…)
部分。然后
--
部分将布尔值转换为
1
,然后
MATCH
在数组中找到该
1
的位置,这就是我们需要的行。只要数据从第1行开始,这项功能就可以工作,但可以轻松地修改以使其工作。不过,我不能完全确定它是否满足您的所有需要..F例如,一个潜在的问题是,如果列
B
中有两个相同的字符串,则由于
MATCH()
函数的工作方式,它将返回上一个字符串


鬼鬼祟祟,但它可能会起作用!

这很好用,非常感谢您的帮助!B列中不会有相同的字符串,因此这不是问题。我现在可以使用该公式,这样我就可以有一个稍微不同的布局。此外,我将FIND(搜索)更改为SEARCH(因此它不区分大小写)。再次感谢您的帮助。