2

我想使用查找表根据其描述列为每一行选择一个标签。描述包含映射到标签的关键字。因此,我需要对关键字列表进行部分匹配,如下所示:

  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:E5 中查找表中的值填充 B 列中的单元格。我可以使用类似的东西

=VLOOKUP(". "&$A2&". ", $D$3:$E$6, 2, 0)

但它不起作用,因为我尝试将全文与部分文本进行匹配。

=VLOOKUP($A2, ". "&$D$3:$E$6&". ", 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", 
 ""))))

你有什么建议吗?

4

2 回答 2

1

解析 A 列中的 KEY x文本以用作.VLOOKUP

    标记通配符查找

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))。根据需要填写。

于 2014-10-13T16:13:25.240 回答
1

尝试使用 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。

在此处输入图像描述

于 2014-10-13T16:14:46.257 回答