VLOOKUP 平均一系列单元格
VLOOKUP average a range of cells
我有一个标准的 VLOOKUP 公式
=VLOOKUP($G28,'Analysis 1'!$A:$CR,$M28+$M28,TRUE)
我将如何修改它以便不只是 return 我希望它的答案平均 3 个单元格的结果,VLOOKUP 上方的单元格,VLOOKUP 下方的单元格和VLOOKUP?
如果我可以指定要平均的 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")
这里是在范围末端修改为 'taper off' 的公式,因此任一侧的单元格数最多为 n,其中 n 是匹配单元格与末尾之间的单元格数范围:-
=IFERROR(
AVERAGE(OFFSET(B,
MATCH(E2,A:A,0)-MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D),0,
MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D)*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:B,MATCH(E2,A:A,0)-MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D)):
INDEX(B:B,MATCH(E2,A:A,0)+MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D))),
"Not found")
我有一个标准的 VLOOKUP 公式
=VLOOKUP($G28,'Analysis 1'!$A:$CR,$M28+$M28,TRUE)
我将如何修改它以便不只是 return 我希望它的答案平均 3 个单元格的结果,VLOOKUP 上方的单元格,VLOOKUP 下方的单元格和VLOOKUP?
如果我可以指定要平均的 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")
这里是在范围末端修改为 'taper off' 的公式,因此任一侧的单元格数最多为 n,其中 n 是匹配单元格与末尾之间的单元格数范围:-
=IFERROR(
AVERAGE(OFFSET(B,
MATCH(E2,A:A,0)-MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D),0,
MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D)*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:B,MATCH(E2,A:A,0)-MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D)):
INDEX(B:B,MATCH(E2,A:A,0)+MIN(MATCH(E2,A:A,0)-1,ROWS(A:A)-MATCH(E2,A:A,0),D))),
"Not found")