使用INDEX MATCH查找绝对最接近的值

时间:2014-09-10 16:21:39

标签: excel excel-formula

我一直在寻找一种方法,在Excel中使用INDEX MATCH来返回数组中绝对最接近的数字而不重新组织我的数据(因为MATCH要求 lookup_array 按降序排列才能找到最接近的数据值大于 lookup_value ,但升序以查找小于 lookup_value 的最接近值。

我在this post找到了答案。 XOR LX的解决方案:

  

= INDEX(B4:B10,MATCH(TRUE,INDEX(ABS(A4:A10-B1)= MIN(INDEX(ABS(A4:A10-B1),,)),,),0))

对我来说很完美,但我不知道为什么。我可以理解大部分内容,但我无法弄清楚这一部分

  

INDEX(ABS(A4:A10-B1)= MIN(INDEX(ABS(A4:A10-B1),,))

任何人都可以解释这部分吗?我讨厌使用它,并且知道它将来会很有用。

1 个答案:

答案 0 :(得分:8)

我想我可以解释一下吧!

实际上,我采用一种旨在规避必须输入公式作为数组公式的技术,即使用CSE,并没有帮助。虽然某些帐户可以认为这是一个加分,但我认为我在这里使用它是错误的,并且可能不会再这样做了。

该技术涉及在公式中的适当位置插入额外的INDEX函数。这会强制其他函数,没有数组条目通常只对传递给它们的任何数组的第一个元素起作用,而是对该数组中的所有元素进行操作。

然而,在我看来,为避免CSE而插入单个INDEX功能虽然完全没问题,但我认为当它达到你使用两个或三个(甚至更多)这样的程度时强制,然后你应该重新考虑它是否值得所有(我做过的几项测试表明,在很多情况下,性能实际上是更糟关闭非阵列,INDEX重型版本比等效的CSE设置)。此外,使用数组公式是值得鼓励的,而不是要避免的事情。

很抱歉这个絮絮叨叨,但实际上它已经达到了这一点,如果我已经给你阵列版本,那么你很可能不会回来寻找解释,因为那个版本看起来像:

= INDEX(B4:B10,MATCH(TRUE,ABS(A4:A10-B1)= MIN(ABS(A4:A10-B1)),0))

在语法上比其他版本更容易理解。

让我知道这是否有帮助和/或您仍然希望我对任何一种解决方案进行细分,我很乐意这样做。

您还可以找到以下感兴趣的链接(我希望我不会通过发布这些链接来破坏本网站的任何规则):

https://excelxor.com/2014/09/01/index-an-alternative-to-array-cse-formulas https://excelxor.com/2014/08/18/index-returning-entire-rowscolumns

此致