匹配(最接近)值,从范围的结尾开始

时间:2014-01-03 15:47:32

标签: excel match worksheet-function

如果我想找到一个我不知道该范围内的确切值的值,我可以使用什么公式(无VBA)?所以我想说,我想从范围的末尾开始找到最接近“2”的值。

A   B
1   1.45
2   2.03
3   3.40
4   3.01
5   1.94
6   0.99

在这种情况下答案是“5”。

Edit1:我注意到我的问题需要更多解释。所以这就是它。我不仅对该范围的 end 中最接近的匹配值感兴趣,而且还对该范围的 start 中的匹配值感兴趣。换句话说,我想从上面的例子中得到“2”和“5”。由于在范围的开始处获取值并不难,所以我只需要在范围的末尾获得一个值即可获得帮助。但是,任何获得这些价值中的一个或两个的建议都会受到赞赏。

我无法对数据进行排序,因为数据也用于其他目的。

编辑2:我想我找到了办法,如果我错了,请纠正我。公式变得有点长,所以我把它分解成碎片。

MAX(
    INDEX(A,
          MATCH(
                 SMALL(ABS(B-$C$1),1),
                 ABS(B-$C$1),
                 0
               )
         )
    INDEX(A,
          MATCH(
                 SMALL(ABS(B-$C$1),2),
                 ABS(B-$C$1),
                 0
               )
         )
   )

MAX函数将通过调用2个几乎相等的函数来吐出A的最高值,其中第一个将找到与查找值最接近的值,第二个将找到与查找值最接近的值。

3 个答案:

答案 0 :(得分:3)

[这个答案假定A栏中的数据单调递增]

以$ C $ 1来测试您的号码(在您的情况下为2)。 (我假设您的输入表在A1:B6中对齐)

然后,在另一个单元格中,写下:

=MAX(IF(ABS(ABS(B1:B6-$C$1)-MIN(ABS(B1:B6-$C$1)) < 0.00000000000001), A1:A6, 0))

这是数组公式;你需要在编辑后按Ctrl + Shift + Return。

(它使用一个带有IF语句扩展到数组的技巧,只发出最小值,而MAX根据问题规范选择较大的索引。小数字在那里作为Excel浮点类型中不精确的解决方法。)

Excel中的数组公式非常功能强大。

答案 1 :(得分:0)

我想我找到了办法,如果我错了,请纠正我。公式变得有点长,所以我把它分解成碎片。

MAX(
    INDEX(A,
          MATCH(
                 SMALL(ABS(B-$C$1),1),
                 ABS(B-$C$1),
                 0
               )
         )
    INDEX(A,
          MATCH(
                 SMALL(ABS(B-$C$1),2),
                 ABS(B-$C$1),
                 0
               )
         )
   )

MAX函数将通过调用2个几乎相等的函数来吐出A的最高值,其中第一个将找到与查找值最接近的值,第二个将找到与查找值最接近的值。

答案 2 :(得分:-1)

您可以使用VLOOKUP:

  

Vlookup是Excel中最受欢迎的查找功能之一。什么时候   您需要根据特定值从表中提取数据   可以使用Vlookup来做到这一点。

http://www.spreadsheetsmadeeasy.com/how-use-vlookup-excel/

*查看示例“搜索数字时的Vlookup”

enter image description here

让我们通过使用Vlookup公式来查看一些返回值。我将使用以下公式在0.03的温度下进行Vlookup:

= VLOOKUP(0.03,$ A $ 2:$ B $ 8,2,TRUE)

结果:“可笑的冷”

Excel逐步执行此公式的方式与我们查看的最后一个类似:

  

首先查看表的第一列,得到值0.03   或近似的东西(近似)。从0.01开始。因为0.01是   小于0.03,它移动到下一个。然后它看着32.自从   32大于0.03,它返回0.01作为最接近的匹配。   现在它转到第2列并返回相应的值   0.01的值,即“可笑的冷”。