我想执行 vlookup,但不是搜索完全匹配或部分匹配,而是搜索单元格中是否包含查找值字符串。是否有可以执行此操作的 excel 函数?
答案1
答案2
答案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”单元格输出,而不是“单元格中可见两个结果”,这会让我搞砸检查,但这只是一个建议。
你也可以将整个测试(或仅测试,而不是输出)用作更大公式的输入,该公式会返回成功搜索的单元地址列表。这取决于你希望如何使用测试结果。