VLOOKUP平均一系列细胞

时间:2015-05-12 10:51:59

标签: excel vlookup

我有一个标准的VLOOKUP公式

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

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

如果我可以指定要平均的vlookup的任一侧的单元格数,我也会很好,所以在上面的情况下它将是1.

1 个答案:

答案 0 :(得分:2)

是的,你需要使用MATCH。

我认为最简单的方法是使用OFFSET功能: -

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

其中查找值在E2中,并且包括任一侧的单元格数在D2中。如果D2包含零,则只需获得与键对应的值(25)。 Lookup和Return列不需要在一起。

该示例包括B列中包含9,16,25,36和49的单元格,并给出答案27.

我应该为细胞太接近结束或范围开始的情况添加错误处理,以便在时间允许时给出正确的答案。

enter image description here

以下是错误处理的公式: -

=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")

这是修改为在范围末端'逐渐减小'的公式,因此任一侧的单元格数最多为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")

enter image description here

<强>更新

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")