从查找表中获取最大值

我有一个像这样的表的Excel工作表:

Index Threshold 1 0 2 10 3 20 ... 

然后我有另一个表的值:

 Values 5 11 14 22 

我想要的是实现一个公式,将“值”映射到可能的最大“索引”,而不会超过“阈值”,例如:

 Values Threshold Index 5 -> 0 -> 1 11 -> 10 -> 2 14 -> 10 -> 2 22 -> 20 -> 3 

我想我可以用log(n)的代价实现一个IF()的二叉树,但是处理起来非常麻烦和笨拙。 例如( T*是阈值, V*是值, I*是指数):

 IF(V1 < T3;IF(V1 < T2;I1;I2);IF(V1 < T4;I3;I4)) 

这是一个平衡的IF()树,如:

  T3 / \ T2 T4 / \ / \ I1 I2 I3 I4 

有更好的(更有用的)方法来实现这个吗?

这只是我正在工作的实际工作表的要点。 真实的数据是二维的,分布在许多页面上,并且远大于(数百个阈值和数千个值)。

特别是复制和粘贴非常难以处理(创build,testing和维护)。


编辑:实际的解决scheme

所以,这是在对这个问题进行了一些研究之后,我想展示为我工作的解决scheme。 MATCH()函数是基本的,但还不够。

首先,阈值并不表示最大允许值,而是最小要求值 。 因此,标题是误导性的。 我所要做的是:

  • 反转阈值范围;
  • -1比较types一起使用MATCH()

为了反转我使用此公式的范围,占用F2:F102范围内的单元格:

 INDEX(C$2:C$102;COUNTA(C:C)+1-ROW()) 

为了匹配我用过的:

 MATCH(D2;F$2:F$102;-1) 

最后一个匹配没有INDEX()因为返回的偏移量已经是我所需要的了。

感谢Scott Craner让我走上正轨!

使用INDEX / MATCH:

 =INDEX(A:A,MATCH(E2,B:B,1)) 

您可能需要使用; 而不是,为您的本地设置:

 =INDEX(A:A;MATCH(E2;B:B;1)) 

在这里输入图像说明