如果字符串包含列表中的单词,则返回与列表值相邻的值

B. *_*ray 1 excel vba

目前我有一组单元格,每个单元格在无用信息中都有一个唯一标识符。我还有这些唯一标识符的列表,以及每个标识符对应的值。

我想要做的是找到一个单元格包含哪个标识符(如果有的话),然后输出相应的值,下面是一个例子:

http://i.stack.imgur.com/97aKI.png

所以单元格包含“ADC”的地方,我希望excel找到ADC在参考数组中出现的位置,然后返回相应的值。

如果这可以用公式或宏来完成,那就太好了。我曾尝试以各种组合摆弄索引、匹配和搜索,但似乎没有任何效果。我发现创建一个庞大的 if 语句是不切实际的,因为要搜索大约 70 个唯一值。

欢迎大家提出意见!

编辑:我被推荐使用 vlookup,但我不是在寻找完全相同的匹配,而是寻找包含在字符串中的特定值。如果 vlookup 确实具有此功能,那么有人可以通过我的具体示例向我展示如何将其付诸实践吗?

小智 5

可以实现“反向通配符”查找的一种方法是使用较新的AGGREGATE¹ 函数。这个函数可以产生循环计算并且有一个选项(例如6)来丢弃错误。使用它生成与交叉引用表匹配的行号,INDEX 函数返回实际值。

      反向 VLOOKUP

B3中的公式是,

=INDEX(F$3:F$5, AGGREGATE(15, 6, ROW($1:$3)*SIGN(MATCH("*"&E$3:E$5&"*", A3, 0)), 1))
Run Code Online (Sandbox Code Playgroud)

请注意,这ROW(1:3)是F3:F5 中的位置,而不是工作表上的实际行号。我还在原始交叉引用表中打乱了FindInsert值,以避免产生关联查找匹配的感觉。


¹AGGREGATE函数与Excel 2010中引入的。它是不是在早期版本。

  • 对于第二个、第三个等匹配,您需要调整 AGGREGATE 的 SMALL 子功能的 *k* 参数。将右端的 **1** 更改为 `COLUMN(A:A)` 然后向右填充。此外,您需要将 F:F 之类的列引用“锁定”到 $F:$F 中,这样它们就不会移动,并且可能会将整个内容包装在 [IFERROR 函数](https://support.office.com/en -us/article/IFERROR-function-F59BACDC-78BD-4924-91DF-A869D0B08CD5) 以避免在没有第二个或第三个匹配项的情况下出现错误消息。 (2认同)