【问题标题】:VLOOKUP average a range of cellsVLOOKUP 平均一系列单元格
【发布时间】:2015-05-12 10:51:59
【问题描述】:

我有一个标准的 VLOOKUP 公式

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

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

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

【问题讨论】:

  • 使用 Match() 而不是 VLOOKUP()Match() 为您获取行号。获得行号后,您可以检索/操作与该行相关的任何数据。

标签: excel vlookup


【解决方案1】:

是的,您需要使用 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。

我可能应该为单元格太靠近范围的结尾或开头而在时间允许时给出正确答案的情况添加错误处理。

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

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


更新

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

【讨论】:

  • 今天我会试一试,让你知道我的进展如何,非常感谢
  • 我看到如果查找是表的最后一行,您已经涵盖了错误处理方面,是否可以修改它以便查找是表的最后一行,那么它会平均最后 3 行,而不是说没有找到?
  • 好问题!同样的事情会适用于表格的第一行吗?如果它是最后一个,但你想要两边有两个单元格怎么办?
  • “逐渐减少”怎么样,这样如果匹配的单元格是从末尾算起的 n 个单元格,则每边最多包含 n 个单元格。所以如果在最后(n=0),就取最后一个单元格的值。
  • 你好汤姆,你是绝对正确的,这也适用于列中的第一个单元格。这非常有效,谢谢你,
猜你喜欢
  • 1970-01-01
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-24
  • 1970-01-01
相关资源
最近更新 更多