【问题标题】:Google Sheet match category with multiple keywords to strings具有多个关键字到字符串的 Google 表格匹配类别
【发布时间】:2019-09-05 06:07:15
【问题描述】:

如何将包含 3 列关键字(列 A B C)的类别列表(列 D)匹配到字符串列表(列 H)并获得列 I 的结果?

我正在考虑 vlookup 并尝试了类似的方法,但看起来它不起作用:

=vlookup("*"&A2:A&"*"&B2:B&"*"&C2:C&"*",H2:H,1)

我也在考虑QUERY,但我认为也不能按行匹配。

感谢任何帮助!

电子表格:https://docs.google.com/spreadsheets/d/1AHT5d4KkZ49csitkICUd7ANwjWMZXk9GAZA_5pVZlrs/edit#gid=0

例如:

【问题讨论】:

    标签: regex google-sheets google-sheets-formula array-formulas gs-vlookup


    【解决方案1】:
    =ARRAYFORMULA(IFERROR(REGEXEXTRACT(
     IFERROR(VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,1), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0))&
     IFERROR(VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,2), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0))&
     IFERROR(VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,3), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0)), 
     TEXTJOIN("|", 1, UNIQUE(IFERROR({
     VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,1), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0);
     VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,2), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0);
     VLOOKUP(INDEX(IFERROR(REGEXEXTRACT(IFERROR(SPLIT(H2:H, "-")), 
     TEXTJOIN("|", 1, A2:C))),,3), {{A2:A;B2:B;C2:C},{D2:D;D2:D;D2:D}}, 2, 0)}))))))
    

    【讨论】:

    • 感谢您回答这个问题,并对模组打架感到抱歉。我发现的一个问题(我应该在H 中提供一组更好的列表)docs.google.com/spreadsheets/d/… 如果我有bling_bang_pay,由于pay 关键字,它错误地将其归类为IncomeInequality。我希望它匹配所有可用的关键字。
    • 嗯,是的,这是一种预期的行为。 bling_bang_pay 没有 -,因此它被视为 1 个短语,例如 SPLIT 未应用,REGEXEXTRACT 处于查找部分匹配而不是完全匹配的模式(完全匹配犯规为:"^"&TEXTJOIN("$|^", 1, A2:C)&"$" 而不是:@987654334 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多