我想使用查找表根据其描述列为每一行选择一个标记。描述包含映射到标记的关键字。因此,我需要部分匹配关键字列表,如下所示:
A B C D E
1 Description Tag Keyword Tag
2 lorem KEYA ipsum KEYA Tag A
3 dolor sit KEYC amet KEYB Tag B
4 KEYB consectetur KEYC Tag C
5 adipiscing elit KEYA KEYD Tag D
6 sed do KEYB eiusmod
我想用D2中的查找表中的值填充B列中的单元格:E5。我可以使用像
这样的东西= VLOOKUP(&#34;。&#34;&amp; $ A2&amp;&#34;。&#34;,$ D $ 3:$ E $ 6,2,0)< / p>
但它不会起作用,因为我试图将全文与部分文本相匹配。
= VLOOKUP($ A2,&#34;。&#34;&amp; $ D $ 3:$ E $ 6&amp;&#34;。&#34;,2,0)
也不起作用。显然,正则表达式仅在搜索条件中受支持。而且我不想写像
这样的东西=IF(ISNUMBER(SEARCH("KEYA",$A2)), "Tag A",
IF(ISNUMBER(SEARCH("KEYB",$A2)), "Tag B",
IF(ISNUMBER(SEARCH("KEYC",$A2)), "Tag C",
IF(ISNUMBER(SEARCH("KEYD",$A2)), "Tag D",
""))))
你有什么建议吗?
答案 0 :(得分:0)
从A列解析KEY x 文本,以用作VLOOKUP
中的 lookup_value 。
B2中的公式为=IFERROR(VLOOKUP(MID(A2,FIND("KEY",A2),4),$C$2:$D$5,2,FALSE),"")
。
附录:对于OpenOffice / LibreOffice:
B2的公式为=IF(ISERROR(VLOOKUP(MID(A2;FIND("KEY";A2);4);$C$2:$D$5;2;0));"";VLOOKUP(MID(A2;FIND("KEY";A2);4);$C$2:$D$5;2;0))
。必要时填写。
答案 1 :(得分:0)
尝试使用Ctrl-Shift-Enter将此数组公式放入B2并将其复制: -
=INDEX(E$2:E$5,MAX((NOT(ISERROR(FIND(D$2:D$5,A2)))*ROW(D$2:$D$5))-1))
它使用FIND在A2中的任何位置依次尝试匹配每个键。如果匹配,则计算出D $ 2中相应的行号:D $ 5。它采用最大匹配行,并使用INDEX查找E $ 2中的相应元素:E $ 5。如果没有匹配的键,则给出#VALUE!错误。
与FIND的匹配区分大小写:如果您不希望它区分大小写,则需要使用SEARCH而不是FIND。
如果你有一个包含两个或更多匹配键的案例,例如
lorem KEYA KEYB ipsum
你会得到列表中最后一个匹配的那个,即TAG B。