我有一个标准的VLOOKUP公式
=VLOOKUP($G28,'Analysis 1'!$A$2:$CR$32,$M28+$M28,TRUE)
我如何修改它,以便不是仅仅返回答案,而是希望它平均3个单元格的结果,VLOOKUP上方的单元格,VLOOKUP下方的单元格和VLOOKUP的单元格?
如果我可以指定要平均的vlookup的任一侧的单元格数,我也会很好,所以在上面的情况下它将是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.
我应该为细胞太接近结束或范围开始的情况添加错误处理,以便在时间允许时给出正确的答案。
以下是错误处理的公式: -
=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")