0

我有一排值-1,2,3,8,35,7,8,3,5,7,x

X 是我希望公式所在的位置

我想以某种方式获得 8 最接近 X 的行的值(所以在这种情况下不是第 4 行,而是第 7 行)

如果我使用match("8",A:A,0),我会得到它找到的第一个匹配项。

如何找到与发生计算的单元格最接近的匹配项?

4

2 回答 2

4

您可以使用:

{=MATCH(2,1/(A1:A10=8))}

只要记住它是一个数组函数,所以必须使用 CTRL+SHIFT+ENTER

答案基于 MATCH 函数的技巧和行为。我将允许自己从ozgrid复制解释:

这里的神奇之处实际上在于 MATCH 函数而不是数组。这里使用了 match 函数的两个有趣的属性:

1) 使用 MATCH,如果没有找到匹配项,那么函数将返回数组中最后一个值的位置,所以如果你做了 =MATCH(8,{1,2,3,4,5,6,7, 6,5,4,3,2,1}),你的结果是 = 13,因为在数组中找不到 8

2) MATCH 将返回最后一个值的位置,但不会返回错误(或空白值)的位置,所以如果你有 =MATCH(8,{1,2,3,4,#DIV /0!,#DIV/0!,7,6,5,4,3,#DIV/0!,#DIV/0!}),你的结果是 = 11,因为第 11 位的 3 是最后一个数组中的值

所以 daddylonglegs 的公式用数组公式中的 (A1:A13=B1) 对照目标值检查每个单元格,为单元格匹配的位置提供一个 TRUE(或 1)的数组,为单元格匹配的位置提供 FALSE(或 0)休息。将 1 除以该数组为 TRUE 的结果为 1,并且 #DIV/0!那个数组是假的。所以他的公式被评估为

=MATCH(2,{#DIV/0!,1,#DIV/0!,#DIV/0!,#DIV/0!,#DIV/0!,1,#DIV/0!,1,#DIV /0!,#DIV/0!,#DIV/0!,#DIV/0!})

由于在数组中没有找到 '2',并且在第 9 位找到最后一个值 (1),因此 MATCH 返回 9

于 2013-07-30T13:52:37.193 回答
4

如果你想要最后一场比赛,你可以在 A11 中使用这个公式

=MATCH(2,INDEX(1/(A1:A10=8),0))

[注意:如果值是数字,那么 8 是可以的 - 如果它们是文本格式的数字,那么你需要“8”]

....或者您在计算单元格的任何一侧都有值(所以最近的可能是向上或向下)?

于 2013-07-30T13:27:58.297 回答