具有多个结果和部分匹配的数组公式

时间:2015-09-24 16:47:03

标签: excel indexing match

我需要帮助,以便“搜索引擎”在搜索时不会完全匹配。

enter image description here

我还想在顶部添加两行来添加标题,但是当我这样做时会发生这种情况。

enter image description here

匹配不会显示前两个结果。应该在第3课和第4课中开始匹配引擎。

1 个答案:

答案 0 :(得分:1)

当您插入两行时,发生了一些导致转变的事情。

ROW($B$1:$B$1000)成为ROW($B$3:$B$1002)。这不是为了返回工作表上的实际行。它旨在返回在INDEX function引用的范围内的位置。在您的第一个公式中,这些是相同的,因为您使用了INDEX($A$1:$A$1000, ...但在插入两行后它变为INDEX($A$3:$A$1002, ...ROW($B$3:$B$1002)返回的最小值为 3 ,而不是 1 ,因此您无法获得$A$3:$A$1002中的第一行

SMALL function k 参数也用于返回一系列连续数字(例如 1,2,3,... )。原来ROW(C1)会返回 1 然后 2,3,... ,因为公式已经填满。这返回了最小的,然后是第二个最小的,然后是第三个最小的,等等。在插入两行之后,这变为ROW(C3),它将返回第三个最小的并从那里继续。

您的array¹公式已修复,以反映两个插入的行

=IFERROR(INDEX($A$3:$A$1002, SMALL(IF($E$3=$B$3:$B$1002, ROW($1:$1000)), ROW(1:1))),"")

请注意,ROW($1:$1000)INDEX($A$3:$A$1002, ...甚至不会反映相同的行,但它们的行数相同ROW(1:1)将返回 1,2,3 ... ,因为它已填满,从而返回最小,第二小,第三小等等。

关于您的不完全匹配,您可以通过几种方式应用通配符搜索。我通常使用SEARCH² function进行与ISNUMBER function配对的通配符搜索,以处理不匹配的$N/A返回。

=IFERROR(INDEX($A$3:$A$1002, SMALL(IF(ISNUMBER(SEARCH("*"&$E$3&"*", $B$3:$B$1002)), ROW($1:$1000)), ROW(1:1))),"")

使用较新的AGGREGATE³ function可以免除阵列¹输入您的公式。

=IFERROR(INDEX($A$3:$A$1002, AGGREGATE(15, 6, ROW($1:$1000)/ISNUMBER(SEARCH($E$3, $B$3:$B$1002)), ROW(1:1))),"")

Wildcard non-exact search

¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确输入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。

² SEARCH function不区分大小写。如果需要区分大小写的定位功能,请改用FIND function

³{2010}引入了AGGREGATE function。它在早期版本中不可用。