Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.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
Vba 查找字符串并从相邻单元格返回信息_Vba_Excel_Excel Formula - Fatal编程技术网

Vba 查找字符串并从相邻单元格返回信息

Vba 查找字符串并从相邻单元格返回信息,vba,excel,excel-formula,Vba,Excel,Excel Formula,使用Excel 2010。我需要查看一组单元格中的字符串是否存在于另一组单元格中,如果存在,则从与该字符串匹配的相邻单元格返回信息。我最初是用SEARCH、ISNUMBER和嵌套IF语句来完成的,但我的源数据集中有几十个条目,必须搜索的字符串有几百个条目。数据类似于图中的数据(简化示例): 对于有限的数据集,我使用了嵌套的IF语句,如: IF(ISNUMBER(SEARCH($D$2,$A2,1)),"Cat Info",IF(ISNUMBER(SEARCH($D$3,$A2,1)),"Dog

使用Excel 2010。我需要查看一组单元格中的字符串是否存在于另一组单元格中,如果存在,则从与该字符串匹配的相邻单元格返回信息。我最初是用SEARCH、ISNUMBER和嵌套IF语句来完成的,但我的源数据集中有几十个条目,必须搜索的字符串有几百个条目。数据类似于图中的数据(简化示例):

对于有限的数据集,我使用了嵌套的IF语句,如:

IF(ISNUMBER(SEARCH($D$2,$A2,1)),"Cat Info",IF(ISNUMBER(SEARCH($D$3,$A2,1)),"Dog Info",IF(ISNUMBER(SEARCH($D$4,$A2,1)),"Elephant Info","Not Found")))
但现在这两组数据都太大,无法在计算机上实现

我需要做的是在A列中的字符串中搜索D列中的关键字。如果找到关键字,我需要从E列返回相应的信息

例如,在B2列中,由于单词
dog
在A2中,我希望E3(
dog部分
)的内容显示在B2中

我的关键字列表是唯一的(D列,列表),我知道在A列(字符串)的字符串中会出现零个或一个关键字


我认为索引和匹配函数可能是我解决方案的一部分,但我不确定如何找到字符串中的列表关键字,然后返回信息列值。

不需要VBA。这可以通过一个简单的公式来实现:

在单元格B2中输入此公式:

=LOOKUP(2,1/SEARCH(D$2:D$7,A2),E$2:E$7)
尽可能向下复制


注意:根据数据大小调整范围引用。

无需VBA。这可以通过一个简单的公式来实现:

在单元格B2中输入此公式:

=LOOKUP(2,1/SEARCH(D$2:D$7,A2),E$2:E$7)
尽可能向下复制


注意:根据数据的大小调整范围引用。

不是全部完成,而是此公式

=最大值(如果(ISNUMBER(搜索(D1$A$1:$A$4,1)),行($A$1:$A$4),0))

数组公式

将给出A1:a4的行,其中包含D1等。然后你可以在上面建立索引。但是,它将只显示max行,因此如果它位于1和2中,则它将只显示第2行


干杯。

不是全部完成,而是这个公式

=最大值(如果(ISNUMBER(搜索(D1$A$1:$A$4,1)),行($A$1:$A$4),0))

数组公式

将给出A1:a4的行,其中包含D1等。然后你可以在上面建立索引。但是,它将只显示max行,因此如果它位于1和2中,则它将只显示第2行


干杯。

你的关键字列表有多大?如果你有uniq list,为什么不使用Find函数?@ergonaut-列表有几十个,大约45个,可能会更改。将你的列表放入字典中,然后遍历单元格和单元格中的单词(使用SPLIT)并在字典中查找值。我可以看到两个问题:1)当一个字符串中有多个匹配项(猫讨厌狗)时,它会返回哪一个2)只会找到精确的匹配项,这样它就不会在你的字符串中拾取“仓鼠”list@Poof-我不知道你是什么意思。关键字列表是几十个(可能会更改),字符串列表是几百个。在B2列中,我需要返回A2中找到的任何关键字的信息(E列)。您的关键字列表有多大?如果您有uniq list,为什么不使用Find函数?@ergonaut-列表有几十个,大约45个,可能会更改。将列表放入字典中,然后遍历单元格和单元格中的单词(使用拆分)并在字典中查找值。我可以看到两个问题:1)当一个字符串中有多个匹配项(猫讨厌狗)时,它会返回哪一个2)只会找到精确的匹配项,这样它就不会在你的字符串中拾取“仓鼠”list@Poof-我不知道你是什么意思。关键字列表是几十个(可能会更改),字符串列表是几百个。在B2列中,我需要返回A2中找到的任何关键字的信息(E列)。