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

Match (closest) value, starting from the end of a range

提问人:Jos 提问时间:1/3/2014 最后编辑:Jos 更新时间:1/6/2014 访问量:1607

问:

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

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

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

编辑1:我注意到我的问题需要更多解释。所以它开始了。我不仅对范围末尾最接近的匹配值感兴趣,而且对范围开头的匹配值感兴趣。换句话说,我想从上面的例子中得到“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 的最高值,其中第一个函数将找到最接近查找值的值,第二个函数将找到第二个最接近查找值的值。

Excel 匹配 工作表函数

评论

0赞 Odrai 1/3/2014
不知何故,您必须执行 (Array.)二进制搜索
0赞 Bathsheba 1/4/2014
请注意,2.05 和 1.95 同样接近 2
0赞 Rowland Shaw 1/4/2014
是否有原因意味着您无法对数据进行排序?
1赞 Jos 1/6/2014
@RowlandShow,正如 pnuts 所说,因为您忘记了 2.05 是在范围的上升部分还是下降部分。

答:

-1赞 Odrai 1/3/2014 #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 的值,即“可笑的冷”。

评论

0赞 Odrai 1/4/2014
就在那里,你有道理......我会寻找另一种解决方案。
0赞 Rowland Shaw 1/4/2014
@pnuts 希望 OP 可以对他们的数据进行排序(没有说他们不能)
0赞 Odrai 1/5/2014
我应该删除这个答案吗?
3赞 Bathsheba 1/4/2014 #2

[此答案假定 A 列中的数据是单调递增的]

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

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

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

这是一个数组公式;编辑完成后,您需要按 Ctrl + Shift + Return。

(它使用了一个技巧,将语句扩展到数组,只发出最小值,并根据问题规范选择较大的索引。这个小数字是解决 Excel 浮点类型中不精确问题的解决方法。IFMAX

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

评论

0赞 Jos 1/6/2014
非常感谢您的建议。它适用于我给你的例子,但我注意到我的例子是有缺陷的。正如你所指出的,2.05 和 1.95 同样接近 2。如果我将 1.95 更改为 1.94,公式会突然返回 2,这不是我想要的。我想在上升和下降的两端获得最接近请求值的值。
0赞 Jos 1/6/2014
您的公式将查找 2.03 值,因为它最接近查找值。我正在寻找最接近曲线另一侧查找值的值。我更新了我的问题,在那里我讨论了迄今为止有效的解决方案。你觉得怎么样?
0赞 Bathsheba 1/6/2014
我明天要演一场戏。
0赞 Jos 1/6/2014 #3

我想我已经找到了一种方法,如果我错了,请纠正我。公式变得有点长,所以我把它分成几部分。

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 的最高值,其中第一个函数将找到最接近查找值的值,第二个函数将找到第二个最接近查找值的值。