Excel 查找最接近具有条件的当前单元格的单元格

Excel 查找最接近具有条件的当前单元格的单元格,excel,cell,Excel,Cell,我有一行值-1,2,3,8,35,7,8,3,5,7,x X是我想要公式的位置 我想以某种方式得到8最接近X的行的值(因此在本例中不是第4行,而是第7行) 如果我使用match(“8”,A:A,0)我会得到它找到的第一个匹配项 如何找到与计算所在单元格最接近的匹配项?如果您希望最后一次匹配,可以在A11中使用此公式 =匹配(2,索引(1/(A1:A10=8),0)) [注意:如果值是数字,则8是可以的-如果它们是文本格式的数字,则需要“8”] ..或者您是否在计算单元的任一侧都有值(因此最近的值

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

X是我想要公式的位置

我想以某种方式得到8最接近X的行的值(因此在本例中不是第4行,而是第7行)

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


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

如果您希望最后一次匹配,可以在A11中使用此公式

=匹配(2,索引(1/(A1:A10=8),0))

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

..或者您是否在计算单元的任一侧都有值(因此最近的值可能是向上或向下)?

您可以使用:

{=MATCH(2,1/(A1:A10=8))}
记住这是一个数组函数,所以必须使用CTRL+SHIFT+ENTER

答案基于匹配函数的技巧和行为。我将允许自己从以下地方复制解释:

这里的神奇之处在于匹配函数,而不是数组。此处使用了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是数组中的最后一个值

因此,DaddyLongleegs的公式根据数组公式中的目标值(A1:A13=B1)检查每个单元格,对于单元格匹配的位置,给出一个带TRUE(或1)的数组,对于其余位置,给出带FALSE(或0)的数组。如果该数组为真,则除以1将得到1,并且#DIV/0!不管那个数组是假的。所以他的公式计算为

=匹配(2、{DIV/0!、1、#DIV/0!、#DIV/0!、#DIV/0!、#DIV/0!、1、#DIV/0!、1、#DIV/0!、#DIV/0!、#DIV/0!、#DIV/0!、#DIV/0!)

由于在数组中找不到“2”,而最后一个值(1)位于第9个位置,因此匹配返回9


所以,我想你想要最后一个位置“8”?是的,这就是我需要的
匹配什么(2,
do?2意味着什么?真的没有什么,你可以把任何数字放在那里,只有1不-1。请在我的答案中找到解释。我承认这很神奇。2可以替换为任何数字>1-公式的工作原理是,结果数组中没有数字>=查找值。请注意,添加的索引函数是避免使用“数组条目”嘿!很久以前我就不记得了,但是是我在Ozgrid上发布了原始答案-barry houdini=daddylonglegs!注意,它的工作原理与所描述的一样,因为“二进制搜索”的工作方式。查找使用了它,因此与第三个参数1(或省略)匹配,或与第四个参数TRUE(或省略)匹配.Binary search为您提供了一个快速查找功能,因为它通过每次将搜索范围一分为二进行搜索,值将被排序。此[此处使用]的一个副作用是,在没有匹配项时选择最后一个数字…因为最后一个数字将是最大的