我有一排价值 - 1,2,3,8,35,7,8,3,5,7,x
X是我希望公式
的地方我想以某种方式得到8最接近X的行的值(在这种情况下不是第4行,而是第7行)
如果我使用match("8",A:A,0)
,我会找到它找到的第一个匹配。
如何找到与计算发生的单元格最接近的匹配?
答案 0 :(得分:4)
如果您想要最后匹配,可以在A11
中使用此公式 =MATCH(2,INDEX(1/(A1:A10=8),0))
[注意:如果值是数字,那么8就可以 - 如果它们是文本格式的数字,那么你需要" 8"]
....或者您是否在计算单元的任一侧有值(因此最近可能是向上或向下)?
答案 1 :(得分:4)
您可以使用:
{=MATCH(2,1/(A1:A10=8))}
只记得它是一个数组函数,所以必须使用CTRL + SHIFT + ENTER
答案基于MATCH函数的技巧和行为。我将允许自己复制ozgrid的解释:
这里的魔法实际上是在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会导致1s数组为TRUE,并且#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