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

问题描述 投票:0回答:1

我有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)))
arrays excel if-statement search indexing
1个回答
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个或更多搜索条件,只需根据需要更改3s和{1;1;1}

© www.soinside.com 2019 - 2024. All rights reserved.