提问人:Jos 提问时间:1/3/2014 最后编辑:Jos 更新时间:1/6/2014 访问量:1607
匹配(最接近)值,从范围的末尾开始
Match (closest) value, starting from the end of a range
问:
如果我想找到一个我不知道该范围内确切值的值,我可以使用什么公式(无 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 的最高值,其中第一个函数将找到最接近查找值的值,第二个函数将找到第二个最接近查找值的值。
答:
您可以使用 VLOOKUP:
Vlookup 是 Excel 中最受欢迎的查找功能之一。什么时候 您需要根据特定值从表中提取数据,您 可以使用 Vlookup 来做到这一点。
http://www.spreadsheetsmadeeasy.com/how-use-vlookup-excel/
*查看示例“搜索数字时的 Vlookup”
让我们通过使用 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 的值,即“可笑的冷”。
评论
[此答案假定 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 浮点类型中不精确问题的解决方法。IF
MAX
Excel 中的数组公式非常强大。
评论
我想我已经找到了一种方法,如果我错了,请纠正我。公式变得有点长,所以我把它分成几部分。
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 的最高值,其中第一个函数将找到最接近查找值的值,第二个函数将找到第二个最接近查找值的值。
评论