我试图找到一些常量和一列值之间的最小值。理想情况下,我想返回行号,以便我可以引用不同的列。
通常使用代码(例如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
答案 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函数,因为看起来你的数据已经被排序了。