我正在尝试检查表格中的特定数据,如果我找到了数据,它将显示数据。我用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)
答案 0 :(得分:3)
如果VLOOKUP失败,IFERROR可以将处理传递给另一个公式。如果查找值(2,50; 2,52; 2,54)是按升序排列的真数,则MATCH与1作为 range_lookup 参数将检索较低值的行号。使用OFFSET来实现AVERAGE的范围。
=IFERROR(VLOOKUP(F3,A:B,2,FALSE),AVERAGE(OFFSET(INDEX(B:B,MATCH(F3,A:A,1)),0,0,2,1)))
答案 1 :(得分:2)
在上图中,A1:B3
包含您的输入数据,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))
如果TRUE
失败,则返回VLOOKUP
。仅当未找到完全匹配时,此查找才会失败(因为最后一个参数为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
,表示范围查找(不精确匹配)。范围查找的documentation for VLOOKUP
states:
TRUE假定表中的第一列也是排序的 以数字或字母顺序排列,然后搜索最近的 值。如果您未指定,则这是默认方法。
当列A按升序排序时,2,51的范围查找返回对应于2,50的值(即较低的值),即4523.这是插值的较低值。
第5行为插值提供了更高的值:
5: MINIFS(B:B,B:B,">" &VLOOKUP(D5, A:B, 2, TRUE))
它在列B中搜索最小值(使用MINIFS
函数),但应用最小值应大于第4行中查找所找到的值的条件。如果第4行的查找返回4523,然后这一行搜索B列中大于4523的最小值,得到4687.这是插值的上限。
获得这两个值后,第3行的AVERAGE
函数返回平均值4523和4687,即4605。
注1 :请注意,您必须单独处理边缘情况(例如2,49或2,55),提供的公式不会这样做。我没有这样做,以便将这个答案集中在你的插值问题上。
注2 :上述公式(特别是第5行)假设B列中的值随着A列中的值的增加而增加。如果B列中的值相对于A列中的值没有增加,则MINIFS
函数将不会返回正确的值。在这种情况下,您将使用MINIFS
和MATCH
函数代替INDEX
函数来查找后续行中的值。即第5行将使用以下公式(而不是MINIFS
):
5: INDEX(B:B,MATCH(VLOOKUP(D5, A:B, 2, TRUE),B:B,0)+1)
答案 2 :(得分:2)
使用此项(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 (不仅仅是输入)。 它还将考虑加权平均值(即2.51和2.505的不同输出)