使用INDEX中嵌入的AND条件进行关键字搜索

时间:2017-12-20 18:27:14

标签: arrays excel if-statement search indexing

我有3个关键字要在数组中查找。它们必须全部存在于单元格中并以任何顺序识别。示例:我正在寻找A,B和C.单元格可能包含“A,B,C”,“A,C,B”,“C,B,A”等。它需要找到它们全部。

这就是我成功为第一个关键字拉取数组的内容。 假设我的第一个关键字在A2中。第二和第三将分别进入A3和A4。

正在搜索的数据集存在于“Lock_Full数据”表中。搜索结果填写在他们自己的工作表“搜索结果”中。

我绝对无法弄清楚如何寻找多个值!

=IF($A$2="","",
   IF(ISERROR(INDEX('Lock_Full Data'!$A:$D,
   SMALL(IF(ISNUMBER(SEARCH($A$2,'Lock_Full Data'!$D:$D)),
   ROW('Lock_Full Data'!$D:$D)),ROW(7:7)),1)),"",
   INDEX('Lock_Full Data'!$A:$D,
   SMALL(IF(ISNUMBER(SEARCH($A$2,'Lock_Full Data'!$D:$D)),
   ROW('Lock_Full Data'!$D:$D)),ROW(7:7)),1)))

1 个答案:

答案 0 :(得分:1)

我建议您使用限制范围而不是使用完整列,因此假设第2行到第100行(根据需要更改)中的数据,您可以使用此公式

=IF(COUNTA(A$2:A$4)<3,"",IFERROR(INDEX('Lock_Full Data'!A$2:A$100,AGGREGATE(15,6,(ROW('Lock_Full Data'!D$2:D$100)-ROW('Lock_Full Data'!D$2)+1)/(MMULT(ISNUMBER(SEARCH(TRANSPOSE(A$2:A$4),'Lock_Full Data'!D$2:D$100))+0,{1;1;1})=3),ROWS(F$7:F7))),""))

CTRL + SHIFT + ENTER 确认并向下复制

替代版本使用SMALL函数,如下所示:

=IF(COUNTA(A$2:A$4)<3,"",IFERROR(INDEX('Lock_Full Data'!A$2:A$100,SMALL(IF(MMULT(ISNUMBER(SEARCH(TRANSPOSE(A$2:A$4),'Lock_Full Data'!D$2:D$100))+0,{1;1;1})=3,ROW('Lock_Full Data'!D$2:D$100)-ROW('Lock_Full Data'!D$2)+1),ROWS(F$7:F7))),""))

假设单元格F7中的第一个公式 - 如果不同,则更改公式中的ROWS(F$7:F7)部分以匹配。注意 - 如果您将A2:A4置于A2:C2之类的水平范围内,那么您可以摆脱TRANSPOSE功能

您可以轻松扩展此版本以满足5个或10个或更多搜索字词,只需更改3和{1;1;1}