我有一排值-1,2,3,8,35,7,8,3,5,7,x
X 是我希望公式所在的位置
我想以某种方式获得 8 最接近 X 的行的值(所以在这种情况下不是第 4 行,而是第 7 行)
如果我使用match("8",A:A,0)
,我会得到它找到的第一个匹配项。
如何找到与发生计算的单元格最接近的匹配项?
您可以使用:
{=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
如果你想要最后一场比赛,你可以在 A11 中使用这个公式
=MATCH(2,INDEX(1/(A1:A10=8),0))
[注意:如果值是数字,那么 8 是可以的 - 如果它们是文本格式的数字,那么你需要“8”]
....或者您在计算单元格的任何一侧都有值(所以最近的可能是向上或向下)?