找到1个值和列之间的最小值

时间:2013-11-11 03:25:52

标签: excel minimum

我试图找到一些常量和一列值之间的最小值。理想情况下,我想返回行号,以便我可以引用不同的列。

通常使用代码(例如Matlab),它就像

一样简单
[minVal, minIdx] = min(abs(constant - arrayOfNumbers))

然后只使用返回的索引来引用正确的列。

我如何在Excel中执行此操作?

常数为4184。

1  Col A  Col B 
2  5040   -0.29
3  4840   -0.41
4  4620   -0.55
5  4450   -0.67
6  4200   -0.86
7  4050   -1
8  3970   -1.11
9  3880   -1.25
10 3850   -1.3

最小绝对差值为abs(4184 - 4200)=第6行= 16.因此我想引用B(6)返回-0.86

2 个答案:

答案 0 :(得分:1)

让我们说你要测试的值(4184)在单元格D1中。

第一步,找到最小的绝对差值:把这个公式称为单元格E1作为数组公式(用Ctrl-Alt-Enter接受)。

=MIN(IFERROR(ABS(A:A-$D$1),""))

然后找到此值所在的行:将此公式作为常规公式放在单元格F1

=IFERROR(MATCH(D1-E1,A:A,0),MATCH(D1+E1,A:A,0))

注1:IFERROR函数需要Excel 2007或更高版本

注意2:如果您不想使用中间公式,可以将它们组合在一起(作为数组公式),但这会重复MIN(...)部分

=IFERROR(MATCH(D1-MIN(IFERROR(ABS(A:A-$D$1),"")),A:A,0),MATCH(D1+MIN(IFERROR(ABS(A:A-$D$1),"")),A:A,0))

答案 1 :(得分:0)

你需要行#,还是只能使用结果-0.86?如果你只想要-0.86,你可以使用vlookup函数,因为看起来你的数据已经被排序了。