0

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

通常使用代码(例如 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

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

4

2 回答 2

1

假设您要针对 ( 4184) 测试的值在 cell 中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))
于 2013-11-11T05:16:39.847 回答
0

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

于 2013-11-11T03:32:24.483 回答