Excel VLOOKUP表示一系列单元格的平均值

Excel VLOOKUP表示一系列单元格的平均值,excel,vlookup,Excel,Vlookup,我有一个标准的VLOOKUP公式 =VLOOKUP($G28,'Analysis 1'!$A$2:$CR$32,$M28+$M28,TRUE) 我该如何修改它,而不是仅仅返回答案,我希望它平均3个单元格的结果,即VLOOKUP上方的单元格、VLOOKUP下方的单元格和VLOOKUP的单元格 如果我能指定我想要平均的vlookup两边的单元格数量,我也会很好,因此在上面的例子中,它将是1。是的,您需要使用MATCH 我认为最简单的方法是使用偏移功能:- =AVERAGE(OFFSET(B1,MA

我有一个标准的VLOOKUP公式

=VLOOKUP($G28,'Analysis 1'!$A$2:$CR$32,$M28+$M28,TRUE)
我该如何修改它,而不是仅仅返回答案,我希望它平均3个单元格的结果,即VLOOKUP上方的单元格、VLOOKUP下方的单元格和VLOOKUP的单元格


如果我能指定我想要平均的vlookup两边的单元格数量,我也会很好,因此在上面的例子中,它将是1。

是的,您需要使用MATCH

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

=AVERAGE(OFFSET(B1,MATCH(E2,A2:A11,0)-D2,0,D2*2+1))
其中,查找值在E2中,包含任一侧的单元格数在D2中。如果D2包含零,则只获得与键(25)对应的值。查找列和返回列不需要在一起

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

我可能应该为单元格太接近范围的结束或开始而无法在时间允许的情况下给出正确答案的情况添加错误处理

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

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


更新

由于指数不易波动,因此可能更倾向于偏移

以下是使用索引的两个公式:-

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

使用Match()而不是VLOOKUP()。Match()获取行号。一旦你有了行号,你就可以检索/操作与该行相关的任何数据。今天我将试一试,让你知道我的进展,我知道你已经介绍了错误处理方面,如果查找是表的最后一行,是否可以修改它,以便查找是表的最后一行,然后它将平均最后3行,而不是说未找到?好问题!表的第一行也会有同样的情况吗?如果它是最后一个,但只有一个,并且您希望两边各有两个单元格,那么“逐渐变细”如何?这样,如果匹配的单元格从末尾算起是n个单元格,那么您最多可以在两侧包含n个单元格。如果它在末尾(n=0),只取最后一个单元格的值。您好,Tom,您完全正确,这也适用于列中的第一个单元格。很好用谢谢你,
=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")