VLOOKUP和插值

我试图检查一个表的具体数据,如果我发现的数据,它会显示数据。 我用VLOOKUP做了这个。 但是现在如果数据不在表中,我想在两组数据之间进行插值。 但我不知道该怎么做。

所以我想实现的是检查一个数字是否在表中,如果它不是它需要插值。

Exapmle:

2,50 4523 2,52 4687 2,54 4790 

我要:2,50显示:4523

我想:2,51(我不是要插入(4687 + 4523)/ 2)

显示:内插的数字

编辑:

Vlookup公式:

 =VLOOKUP(F3;Tabel3;2;FALSE) 

EXCEL截图

在这里输入图像说明

如果VLOOKUP失败,IFERROR可以将处理传递给另一个公式。 如果查找值(2,50; 2,52; 2,54)是以升序排列的真实数字,那么使用1作为range_lookup参数的MATCH将检索较低值的行号。 使用OFFSET可以达到AVERAGE的范围。

 =IFERROR(VLOOKUP(F3,A:B,2,FALSE),AVERAGE(OFFSET(INDEX(B:B,MATCH(F3,A:A,1)),0,0,2,1))) 

在这里输入图像说明

在这里输入图像说明

在上图中, A1:B3包含您的input数据,D列包含您正在查找的值,而E列是查找公式。

E5的公式是:

 =IF(ISNA(VLOOKUP(D5, A:B, 2, FALSE)), AVERAGE(VLOOKUP(D5, A:B, 2, TRUE),MINIFS(B:B,B:B,">" &VLOOKUP(D5, A:B, 2, TRUE))), VLOOKUP(D5, A:B, 2, FALSE)) 

格式化它的可读性,它变成:

 1: =IF( 2: ISNA(VLOOKUP(D5, A:B, 2, FALSE)), 3: AVERAGE( 4: VLOOKUP(D5, A:B, 2, TRUE), 5: MINIFS(B:B,B:B,">" &VLOOKUP(D5, A:B, 2, TRUE)) 6: ), 7: VLOOKUP(D5, A:B, 2, FALSE) 8: ) 

公式的解释

该行:

 2: ISNA(VLOOKUP(D5, A:B, 2, FALSE)) 

如果VLOOKUP失败,则返回TRUE 。 只有在没有find完全匹配的情况下,此查找才会失败(因为最后一个参数为false,所以查找完全匹配)。

如果第2行上面的ISNA()函数返回FALSE ,则发现完全匹配,并且该语句返回该值:

 7: VLOOKUP(D5, A:B, 2, FALSE) 

目前在最后一行。

但是,如果第2行的ISNA()返回TRUE那么找不到精确匹配,导致平均(插值)被返回,如下所示:

 3: AVERAGE( 4: VLOOKUP(D5, A:B, 2, TRUE), 5: MINIFS(B:B,B:B,">" &VLOOKUP(D5, A:B, 2, TRUE)) 6: ), 

这里,第4行的VLOOKUP()与其他两个查找略有不同 – 最后一个参数是TRUE表示范围查找(不精确匹配)。 VLOOKUP的文档指出 ,对于范围查找:

TRUE假定表中的第一列以数字或字母顺序sorting,然后search最接近的值。 如果您不指定,这是默认的方法。

当列A按升序sorting时,范围查找为2,51返回对应于2.50(即较低值)的值,即4523.这是插值的较低值。

第5行给我们插值的更高的值:

 5: MINIFS(B:B,B:B,">" &VLOOKUP(D5, A:B, 2, TRUE)) 

它在列B中search最小值(使用MINIFS函数),但是应用最小值应该大于第4行中的查找值的条件。如果第4行的查找返回4523,则该行search最小值在B列中的值大于4523,这给出了4687.这是插值的上限。

一旦获得这两个值,第3行的AVERAGE函数返回平均值4523和4687,即4605。


注1 :请注意,你将不得不单独处理边缘情况(如2,49或2,55),所提供的公式不会这样做。 我没有这样做,以保持这个答案专注于你的插值问题。

注2 :上述公式(具体是第5行)假定列B随着列A中的值的增加而增加。 如果列B中的值不相对于列A中的值增加,那么MINIFS函数将不会返回正确的值。 在这种情况下,您将使用MATCHINDEX函数来查找随后行中的值,而不是MINIFS函数。 即第5行将使用下面的公式(而不是MINIFS ):

 5: INDEX(B:B,MATCH(VLOOKUP(D5, A:B, 2, TRUE),B:B,0)+1) 

使用这个(在D5领域2.51)

 =FORECAST(D5,OFFSET($B$1,MATCH(TRUE,$A$1:$A$100<=D5,0),,2),OFFSET($A$1,MATCH(TRUE,$A$1:$A$100<=D5,0),,2)) 

Ctrl + Shift + Enter确认 (不只是input)。 它也会考虑加权平均(即2.51和2.505的不同产出)