Excel平均值通过查找列标准

我有一个电子表格,如下所示: 在这里输入图像说明

数据位于彩色部分,右边是一个表格,当ABC,XYZ或GGG中的数据位于最大值和最小值之间时,该表格显示结果列的平均值。

这是用这个公式完成的: =AVERAGEIFS($D$4:$D$27,A$4:A$27,"<"&$F5,A$4:A$27,">"&$G5)

我想要做的是让该公式引用标题,然后在数据表中查找适当的列来应用averageif标准。

公式我现在工作正常,但是,如果我添加更多的列和数据表可能是不合理的,如果我能够将查找或匹配纳入averageifs公式,将会好得多。

下面的非易失性函数将做到这一点:

 =SUMPRODUCT(($A$1:$C$1=H$1)*($A$2:$C$21>=$G2)*($A$2:$C$21<=$F2)*($A$2:$C$21))/SUMPRODUCT(($A$1:$C$1=H$1)*($A$2:$C$21>=$G2)*($A$2:$C$21<=$F2)) 

在这里输入图像说明


编辑

当另一列在约束范围内时得到结果列的平均值。 更改第一个SUMPRODUCT()中的第四个标准:

 =SUMPRODUCT(($A$1:$C$1=H$1)*($A$2:$C$21>=$G2)*($A$2:$C$21<=$F2)*($D$2:$D$21))/SUMPRODUCT(($A$1:$C$1=H$1)*($A$2:$C$21>=$G2)*($A$2:$C$21<=$F2)) 

在这里输入图像说明


EDIT2

另一个既非易失也非非数组的选项:

 =AVERAGEIFS(D:D,INDEX(A:C,0,MATCH(H$1,1:1,0)),">=" & G4,INDEX(A:C,0,MATCH(H$1,1:1,0)),"<=" &F4) 

如果你是通过less量的计算,那么偏移量函数将会用你的引用来replace当前的A列

 OFFSET($A$4,0,MATCH(h$2,$a$2:$d$2,0))-1,24,1) 

抵消分解为$ A $ 4作为您的参考点。 0是从参考点开始移动多less行MATCH(h$2,$a$2:$d$2,0))-1是从参考点移动多less列24是行数返回1是多less列返回

匹配公式在A2:D2的标题道路中查找H2中的值以进行精确匹配,并返回find该项目的地点的编号。 我们从这个结果中减去1,因为我们只想移动一个比find该项目更less的点。 所以如果在第一个地方发现我们不想移动任何列,所以我们需要使值为0。

你结束公式会看起来像这样:

 =AVERAGEIFS($D$4:$D$27,OFFSET($A$4,0,MATCH(h$2,$a$2:$d$2,0))-1,24,1),"<"&$F5,OFFSET($A$4,0,MATCH(h$2,$a$2:$d$2,0))-1,24,1),">"&$G5)