VLOOKUP平均一个范围的单元格

我有一个标准的VLOOKUP公式

=VLOOKUP($G28,'Analysis 1'!$A$2:$CR$32,$M28+$M28,TRUE) 

我将如何修改这个,而不是只是返回的答案,我希望它平均3个单元格的结果,VLOOKUP上方的单元格,VLOOKUP下面的单元格和VLOOKUP单元格的结果?

我也会很好,如果我可以指定的单元格的数量,我想要平均的查找,所以在上面的情况下,它将是1。

是的,你需要使用MATCH。

我认为最简单的方法是使用OFFSET函数:

 =AVERAGE(OFFSET(B1,MATCH(E2,A2:A11,0)-D2,0,D2*2+1)) 

其中查找值在E2中,并且包括任一侧的单元的数量在D2中。 如果D2包含零,您只需获取与该键(25)对应的值。 查找和返回列不需要在一起。

这个例子包括B列中包含9,16,25,36和49的单元格,并给出答案27。

如果时间允许,我应该为单元格太接近范围的末端或范围的情况添加error handling,以给出正确的答案。

在这里输入图像说明

这是有error handling的公式:

 =IFERROR( IF(OR((MATCH(E2,A2:A11,0)-D2)<1,(MATCH(E2,A2:A11,0)+D2)>ROWS(B2:B11)), "Out of range", AVERAGE(OFFSET(B1,MATCH(E2,A2:A11,0)-D2,0,D2*2+1))), "Not found") 

这里是公式被修改为在该范围的末端“逐渐减less”,因此任一侧的单元格的数量是n的最大值,其中n是匹配单元格和范围的末尾之间的单元格的数量:

 =IFERROR( AVERAGE(OFFSET(B$1, MATCH(E2,A$2:A$11,0)-MIN(MATCH(E2,A$2:A$11,0)-1,ROWS(A$2:A$11)-MATCH(E2,A$2:A$11,0),D$2),0, MIN(MATCH(E2,A$2:A$11,0)-1,ROWS(A$2:A$11)-MATCH(E2,A$2:A$11,0),D$2)*2+1)), "Not found") 

在这里输入图像说明


更新

INDEX可能比OFFSET更受欢迎,因为它不易变。

这里是使用INDEX的两个公式:

 =IFERROR( IF(OR((MATCH(E2,A2:A11,0)-D2)<1,(MATCH(E2,A2:A11,0)+D2)>ROWS(B2:B11)), "Out of range", AVERAGE(INDEX(B2:B11,MATCH(E2,A2:A11,0)-D2):INDEX(B2:B11,MATCH(E2,A2:A11,0)+D2) )), "Not found") 

 =IFERROR( AVERAGE( INDEX(B$2:B$11,MATCH(E2,A$2:A$11,0)-MIN(MATCH(E2,A$2:A$11,0)-1,ROWS(A$2:A$11)-MATCH(E2,A$2:A$11,0),D$2)): INDEX(B$2:B$11,MATCH(E2,A$2:A$11,0)+MIN(MATCH(E2,A$2:A$11,0)-1,ROWS(A$2:A$11)-MATCH(E2,A$2:A$11,0),D$2))), "Not found")