反向通配符Vlookup

时间:2018-10-10 17:20:39

标签: google-sheets wildcard vlookup

我正在尝试对我执行看起来像反向通配符查找的操作,但是如果有人对更好的公式提出建议,我完全可以接受。

我有一列在单元格ex :(房子是棕色)中有多个单词,然后我有一个表,该表具有一列颜色和一列值ex:(A2 =棕色,B2 = 1738 ),而我想做的是关闭一个vlookup(房子是棕色的)并返回1738的值。

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

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

在通配符附加到查找值的位置,但这似乎不起作用,我一直在研究通配符的位置,却一无所获。

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

从问题中得到的数据如下:

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

由以下形式的查找表补充

命名范围“ LookupTable”
Col1; Col2
棕色; 5
红色; 6
蓝色; 7
等等

然后是公式

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

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

输出:
5
5 6
6
6

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

请注意,查询表必须使用小写字母才能获得肯定的匹配。

那是你的追求吗?

为便于编辑,测试或完善答案,此处是link对电子表格的显示,该电子表格显示了实际操作,一旦接受答案,我将删除它。

说明其工作原理

(1)通过将正则表达式与字符串文字一起使用来标识LookupTableCol1中是否存在一个查找词。添加到每端的“ \ b”部分可确保将其作为一个整体进行匹配,并且使用lower()函数可确保我们的结果不区分大小写。
(2)然后将其输入到vlookup()中以在查找表中搜索该单词并返回相关值。
(3)如果在regexextract()或vlookup()中未找到匹配项,则使用“ iferror()”删除任何“ N / A”错误。
(4)Arrayformula()用于沿LookupTableCol1重复这些操作并返回一个数组 (5)Join()用于将整个数组连接到单个单元中以提高可读性。
(6)Trim()用于删除由于将join()与包含空白单元格的数组一起使用而导致从arrayformula返回的数组中空白单元格导致的任何前导或尾随空格。