如何通过从列中引用来查找EXCEL表中最接近的值并返回行值

我有一个下面的表,我想要find最接近的值,一旦我input我的号码。 我的答案必须通过引用下面的两列值来返回经验年数的行值。

a)我的列1值= MYS_02

b)我的专栏2价值=最低工资

以下是我的表格: 在这里输入图像说明

这是我的公式。

= INDEX(A3:A15,SUMPRODUCT(MAX(($ B $ 2:$ķ$ 2 $ B $ 1:$ķ$ 1 $ B $ 3:$ķ$ 15 = $ A $ 18 $ A $ 20 $ B $ 22)*( ROW($ B $ 3:$ķ$ 15)))) – ROW($ B $ 3)+1)

它工作,如果我input的值在表中。 但是,当我inputless于或多于表中的值时,显示错误

在这里输入图像说明

它也显示错误的经验年份,当我插入表中有重复的值。 我希望我的“ 多年经验”行显示最接近的价值。

您可能会看到,当我input1400时 ,显示12 年的经验行。

在这里输入图像说明

它假设显示8而不是12

所以我的问题是我如何find最接近的价值。 我怎么能做到这一点?

把它缩短,你可以使用这个公式:

=INDEX(A1:A15,MIN(IF(ABS(B3:K15-B22)=MIN(ABS(B3:K15-B22)),ROW(3:15)))) 

这是一个数组公式,必须用Ctrl + Shift + Enter确认

MIN(ABS(B3:K15-B22)) ),然后返回每一行( ROW(3:15) ),得到相同的差值( ABS(B3:K15-B22)= )。 然后它只是select最小的行值( MIN(IF(...)) )并将其用于索引。

它总是为lowes行号! 如果B13和H4是相同的(也是最低的),它将select第4行(并返回1)

编辑

正确的公式是:

 =INDEX(A1:A15,MIN(IF(ABS(IF(B1:K1=A20,IF(B2:K2=A18,B3:K15-B22)))=MIN(ABS(IF(B1:K1=A20,IF(B2:K2=A18,B3:K15-B22)))),ROW(3:15)))) 

这是一个数组公式,必须用Ctrl + Shift + Enter确认

是否与第一个公式相同,但删除了与第1行和第2行不相符的所有列( IF(B1:K1=A20,IF(B2:K2=A18,B3:K15))

编辑2

基于评论:如果你想排除小于search值的值,那么请使用这个公式:

 =INDEX(A1:A15,MIN(IF(MAX(IF(B1:K1=A20,IF(B2:K2=A18,IF(B3:K15<=B22,B3:K15))))=IF(B1:K1=A20,IF(B2:K2=A18,IF(B3:K15<=B22,B3:K15))),ROW(3:15)))) 

这是一个数组公式,必须用Ctrl + Shift + Enter确认

对于最低的一行小于或等于拟议工资,在B23中join这个标准公式。

 =INDEX(A3:A15, AGGREGATE(14, 6, ROW(1:13)/(B22>=INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max"))), 1)) 

如果你想要基于的实际工资,那么这个标准公式在C22。

 =INDEX($B$3:$K$15, AGGREGATE(14, 6, ROW(1:13)/(B22>=INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max"))), 1), MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max")) 

aggregate_lowest_greater_then

替代绝对最接近

对于B22和适当的薪金栏之间的最小绝对差额,B23的经验年数是,

 =INDEX(A3:A15, AGGREGATE(15, 6, ROW(1:13)/(ABS(B22-INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max")))=AGGREGATE(15, 6, ABS(INDEX(B3:K15, 0, MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))-B22), 1)), 1)) 

匹配表的工资将被检索,

 =INDEX($B$3:$K$15, AGGREGATE(15, 6, ROW(1:13)/(ABS(B22-INDEX(B3:J15, , MATCH(A20, B1:J1, 0)+(LEFT(A18, 3)="max")))=AGGREGATE(15, 6, ABS(INDEX(B3:K15, 0, MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))-B22), 1)), 1), MATCH(A20, B1:K1, 0)+(LEFT(A18, 3)="max"))