在索引列中使用通配符进行 Vlookup

在索引列中使用通配符进行 Vlookup

我知道如何在参考值上使用 Vlookup 通配符,但是如何在匹配的列索引上使用通配符呢?

我知道你可以这样做VLOOKUP("*Hello*",A4:G4,2,FALSE)

但是,如果你想要将一个单元格“Hello”与另一个单元格“Why, Hello there!”进行匹配,该怎么办呢(我想应该是相反的)

我的数据设置方式是,宏将询问是否A4匹配workbook 1C2:C25000workbook 2将 D 中的相应值返回给workbook 1。想法是,当 A4 输入workbook 1显示“Its DHS Here”时,我可以输入一个值,例如国土安全部在工作簿 2 的 C 列中,让其显示匹配。

这可能吗?

答案1

关键是通过连接来创建查找值*,就像这样

=VLOOKUP("*"&A4&"*",'[workbook 2.xlsx]Sheet1'!$C$2:$D$25000,2,0)

(调整工作表名称以适应)

答案2

既然您已经计划使用宏,那么使用附加组件的可能性有多大?据我了解,您正在寻找模糊查找。Excel 创建了一个插件来完成这项任务这里

答案3

我多次遇到过这个问题。您需要将通配符短语放在不同的单元格中。

单元格 B1 中有以下内容: *Hello*

您的新公式:VLOOKUP(B1,A4:G4,2,FALSE)

现在它应该可以工作了。

答案4

我的理解是,可能"lookup value"是“为什么,你好!”或“DHS 在这里”,并且您希望它分别与查找范围内的“Hello”和“DHS”匹配。

鉴于此,对于公式方法,请尝试以下操作:

=LOOKUP(2^15,SEARCH(C2:C25000,A4)/(C2:C25000<>""),D2:D25000)

其中 A4 是查找值,根据需要插入工作簿/工作表引用。

这将找到最后的在 C2:C25000 中“匹配”,对于第一的您可以使用的匹配

=INDEX(D2:D25000,MATCH(1,INDEX(ISNUMBER(SEARCH(C2:C25000,A4))*(C2:C25000<>""),0),0))

注意:其中任何一个都可以匹配部分“单词”,所以如果 A4 是“Rat catcher”,那么它可能与“cat”或“catch”以及“rat”匹配 - 您可以添加空格以强制匹配整个单词,例如第一个公式可以适用于:

=LOOKUP(2^15,SEARCH(" "&C2:C25000&" "," "&A4&" ")/(C2:C25000<>""),D2:D25000)

尽管假设所有单词都由空格分隔且没有标点符号......

相关内容