如何使用索引、匹配和搜索在同一单元格中 return 多个结果
How to return multiple results in the same cell using Index, Match and Search
我有一个有效的索引、匹配、搜索公式,可以在我的产品标题中搜索我在密钥中确定的特定术语,如果没有找到结果,那么它也可以使用不同的密钥搜索我的产品 SKU .
目前,该公式只给我它在我的密钥中找到的第一个结果,但我希望它 return 尽可能多的结果都用竖线或逗号分隔。
这是给我 1 个结果的工作公式。
=IF((ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$L:$L,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$K:$K,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0)))))
如果我能让它工作,那就太棒了。如果有人希望看到它的工作,这里是我的电子表格副本的 link。请随意进行任何编辑。
https://docs.google.com/spreadsheets/d/1APLCVnqmP51UbimyZeY-S0BoSEuFWkPa2LtAxVX9H0E/edit?usp=sharing
我试过使用以下公式,但效果并不理想。
=IF((ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0)))))&" | "&(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0))))
此公式再次搜索第二个键并连接所有结果。但是,我得到了重复项,它仍然只是 return 找到的第一个结果。
如果这样:
那么 D2 单元格将是:
=ARRAYFORMULA(TEXTJOIN(" | ", 1, UNIQUE({
IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(B2, " "),
TEXTJOIN("|", 1, 'Array Key'!E:E)))), 'Array Key'!E:F, 2, 0));
IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(A2, " "),
TEXTJOIN("|", 1, 'Array Key'!G:G)))), 'Array Key'!G:H, 2, 0))})))
我有一个有效的索引、匹配、搜索公式,可以在我的产品标题中搜索我在密钥中确定的特定术语,如果没有找到结果,那么它也可以使用不同的密钥搜索我的产品 SKU .
目前,该公式只给我它在我的密钥中找到的第一个结果,但我希望它 return 尽可能多的结果都用竖线或逗号分隔。
这是给我 1 个结果的工作公式。
=IF((ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$L:$L,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$K:$K,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$J:$J,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$I:$I,$B2)),0)))))
如果我能让它工作,那就太棒了。如果有人希望看到它的工作,这里是我的电子表格副本的 link。请随意进行任何编辑。
https://docs.google.com/spreadsheets/d/1APLCVnqmP51UbimyZeY-S0BoSEuFWkPa2LtAxVX9H0E/edit?usp=sharing
我试过使用以下公式,但效果并不理想。
=IF((ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0))))="",(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0)))),(ARRAYFORMULA(INDEX('Array Key'!$F:$F,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$E:$E,$B2)),0)))))&" | "&(ARRAYFORMULA(INDEX('Array Key'!$H:$H,MATCH(TRUE,ISNUMBER(SEARCH('Array Key'!$G:$G,$A2)),0))))
此公式再次搜索第二个键并连接所有结果。但是,我得到了重复项,它仍然只是 return 找到的第一个结果。
如果这样:
那么 D2 单元格将是:
=ARRAYFORMULA(TEXTJOIN(" | ", 1, UNIQUE({
IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(B2, " "),
TEXTJOIN("|", 1, 'Array Key'!E:E)))), 'Array Key'!E:F, 2, 0));
IFERROR(VLOOKUP(TRANSPOSE(IFERROR(REGEXEXTRACT(SPLIT(A2, " "),
TEXTJOIN("|", 1, 'Array Key'!G:G)))), 'Array Key'!G:H, 2, 0))})))