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
函数将不会返回正确的值。 在这种情况下,您将使用MATCH
和INDEX
函数来查找随后行中的值,而不是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的不同产出)