如何在数组公式中进行多次搜索?

时间:2019-05-22 14:35:34

标签: regex if-statement google-sheets array-formulas google-sheets-formula

我正在努力使某些公式起作用,这将大大改善我的工作质量。我希望公式对我的“标题”列和“ SKU”列中存在的关键字进行2次搜索,然后根据我位于第二个选项卡中的键返回结果。

https://gyazo.com/e6a3914ea9a96f8dcdce47d9ec704b37

上面的屏幕截图是我的关键。如果产品的标题栏中包含任何关键字,则将自动分配相应的类别。

在下面的示例屏幕截图中,我有要进行1次搜索的公式。它将在“键”中的“关键字”列中搜索“标题”列(B),如果标题中存在该单词,则会根据结果所在的行将结果返回。

https://gyazo.com/63f98251dac757378ceadbfe3e4167a6

我想要实现的是在同一列中进行多次搜索。我希望能够首先通过“标题”进行搜索,如果没有返回任何结果,那么我希望它通过“ SKU”列针对键中的关键字和类别(C和D列)进行搜索

在下面的屏幕截图中,我尝试将其包装在IF语句中

IF(TITLESEARCH=""),(SKUSEARCH),(TITLESEARCH)

enter image description here

我返回的结果似乎适用于IF语句的第一部分。它给我返回的结果对于IF语句的第一部分是正确的,但是第二部分似乎无法正常工作,我不知道为什么。在应该为其分配“附件”类别的地方,它只是给我“假”。

如果有人想看一下,这里是电子表格的链接。我已经为此动了几天脑子,感觉好像已经走了很长一段路。

https://docs.google.com/spreadsheets/d/1548QMP5qeAIFrbraGD_lkJkQWzKF4Td6FR1KkcOHHJM/edit?usp=sharing

我是Google表格和excel公式的新手(尤其是在此级别上),所以请保持柔和。感觉我犯的错误可能非常明显。

https://exceljet.net/formula/categorize-text-with-keywords

这是我的公式所基于的。

=IF(ARRAYFORMULA(INDEX('Array Key'!B:B,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!A:A,B234)),0)))="",(ARRAYFORMULA(INDEX('Array Key'!D:D,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!C:C,A234)),0),(ARRAYFORMULA(INDEX('Array Key'!B:B,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!A:A,B234)),0))))))))

1 个答案:

答案 0 :(得分:1)

删除所有公式,只需使用:

=ARRAYFORMULA(IF(LEN(B2:B), IF(IFERROR(VLOOKUP(REGEXEXTRACT(A2:A, 
 TEXTJOIN("|", 1, 'Array Key'!C3:C)), 
 'Array Key'!C3:D, 2, 0))="",
 IFERROR(VLOOKUP(REGEXEXTRACT(B2:B, 
 TEXTJOIN("|", 1, 'Array Key'!A3:A)), 
 'Array Key'!A3:B, 2, 0)),
 IFERROR(VLOOKUP(REGEXEXTRACT(A2:A, 
 TEXTJOIN("|", 1, 'Array Key'!C3:C)), 
 'Array Key'!C3:D, 2, 0))), ))

0