Vlookup 字符串搜索

Vlookup 字符串搜索

我想执行 vlookup,但不是搜索完全匹配或部分匹配,而是搜索单元格中是否包含查找值字符串。是否有可以执行此操作的 excel 函数?

答案1

问题

因此,这是行不通的:

=VLOOKUP(D2,$A$2:$B$5,2)

在此处输入图片描述

1. 使用通配符来lookup_value执行CONTAINS

首先是lookup_value用通配符括起来*

=VLOOKUP("*"&D2&"*",$A$2:$B$5,2)

2. 利用可选的第四个参数VLOOKUP进行近似匹配

=VLOOKUP("*"&D2&"*",$A$2:$B$5,2,FALSE)

解决方案

在此处输入图片描述

注意:

它将为您提供包含搜索文本的第一个匹配项。

答案2

这里不需要使用VLOOKUP,您可以使用SEARCH

=IF(ISNUMBER(SEARCH("string",A1)),"Value if contains","Value if not contains")

在此处输入图片描述

答案3

假设 B 列中有一个列表,E 列中有一个查找值,则以下内容将起作用(如果您具有 SPILL 功能):

=IF(ISERROR(
HLOOKUP($E$1,    MID($B1, SEQUENCE(1, LEN($B1)),  LEN($E$1)),    1,    FALSE)),
"","Present")

如果您有这个LET()功能(我上周才得到它),您可能会更喜欢这样更有条理的外观:

=LET(
SearchString,    MID($B1, SEQUENCE(1, LEN($B1)), LEN($E$1)),

IF(ISERROR(
HLOOKUP($E$1, SearchString, 1, FALSE)),
"","Present")
)

无论哪种情况,它都会用来MID()创建所有可能的字符串,长度为“无论查找字符串的长度是多少”,这些字符串从搜索字符串中的每个位置开始。HLOOKUP()然后检查此水平字符串是否匹配。(如果您出于某种原因愿意VLOOKUP(),可以将该MID()部分包装在TRANSPOSE(). 中)

如果找到匹配项,ISERROR()则返回 FALSE,因此输出“Present”,如果未找到匹配项,则输出“”(空白单元格)。当然,可以很容易地更改这些。在对长列表进行视觉搜索时,我更喜欢“NOT-Blank vs.Blank”单元格输出,而不是“单元格中可见两个结果”,这会让我搞砸检查,但这只是一个建议。

你也可以将整个测试(或仅测试,而不是输出)用作更大公式的输入,该公式会返回成功搜索的单元地址列表。这取决于你希望如何使用测试结果。

相关内容