反向通配符 Vlookup

Reverse Wild Card Vlookup

我正在尝试执行对我来说似乎是反向通配符查找的操作,但如果有人对更好的公式有任何建议,我完全愿意接受。

我有一列在单元格 ex:(the house was brown) 中有多个单词,然后我有一个 table,其中有一列颜色和一列值 ex:(A2 =brown, B2=1738) 而我想做的是 运行 vlookup(房子是棕色的)和 return 1738 值。

在我看来,公式看起来像这样

=vlookup("the house was brown",sheet2!"*"&A:B&"*",2,false)

通配符附加到查找值的地方,但这似乎不起作用,我试过通配符的位置,但一无所获。

如有任何帮助,我们将不胜感激。

谢谢!

从问题中,您有如下数据:

A1:A4
中的数据 鼠标是棕色的
房子是棕色的
车子是红色的
知更鸟是红色的

辅以 table 形式的查找

命名范围"LookupTable"
列 1 ; Col2
棕色的; 5
红色的; 6
蓝色的; 7
等等

然后公式,

=trim(join(" ",arrayformula(iferror(vlookup((iferror(regexextract(lower(A1),"\b"&LookupTableCol1&"\b"),"")),LookupTable,2,FALSE),""))))

in B1:B4,其中 A1 是 LookupTable 的右上角,给出输出

输出:
5
5 6
6
6

也就是说,查找单词的每个实例 table 都由关联的数字标识,并且这些数字在单个单元格中一次一个地列出(space 分隔)。

请注意,查找 table 必须为小写才能获得正匹配。

这是你想要的吗?

为了编辑、测试或改进答案,这里提供了一个 link 电子表格,其中显示了实际操作,一旦答案被接受,我将删除它。

说明这是如何工作的
这适用于

(1) 通过使用带有字符串文字的正则表达式来识别 LookupTableCol1 中查找词之一的存在。添加到每一端的 "\b" 部分确保它作为一个完整的单词进行匹配,并且使用 lower() 函数来确保我们的结果不区分大小写。
(2) 然后将其输入到 vlookup() 中以在查找 table 和 return 关联值中搜索该词。
(3) 如果在 regexextract() 或 vlookup() 中找不到匹配项,则 "iferror()" 用于删除任何 "N/A" 错误。
(4) Arrayformula() 用于重复这些操作向下 LookupTableCol1 和 return 一个数组 (5) Join() 用于将整个数组连接成一个单元格以提高可读性。
(6) Trim() 用于删除任何前导或尾随 spaces,这是由于对数组使用 join()包含空白单元格。