【问题标题】:Excel / LibreOffice Calc Partial Match in ReverseExcel / LibreOffice Calc 反向部分匹配
【发布时间】:2014-10-13 13:15:14
【问题描述】:

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

  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", 
 ""))))

你有什么建议吗?

【问题讨论】:

    标签: excel excel-formula libreoffice openoffice-calc libreoffice-calc


    【解决方案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。

    【讨论】:

    • FIND(D$2:D$5,A2) 部分似乎在 LibreOffice 中不起作用。我总是得到“#VALUE!”我会尝试使用 Excel。
    • 我没有在 LibreOffice 中尝试过,但在 Excel 和 OpenOffice 中可以正常工作。使用 OpenOffice(除了分号)的唯一区别是我必须向下复制和粘贴数组公式,而不是把它拉下来。如果您将 FIND 部分单独放入,您应该得到值 7,后跟三个 #VALUE!单元格 - 这些已在我通过 ISERROR 函数在答案中给出的公式中删除。
    【解决方案2】:

    解析 A 列中的 KEYx 文本以用作 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))。根据需要填写。

    【讨论】:

    • 谢谢,但并非我所有的关键字都包含“KEY”初始化。它们是任意关键字。抱歉不清楚。
    猜你喜欢
    • 1970-01-01
    • 2012-12-20
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多