Excel:使用LOOKUP或SUMPRODUCT代替AverageIFS

我有一个电子表格,包含所有数据旁边的大量数据列和结果列。 我试图创build一个公式,如果相邻列中的数据落在指定范围内,将给出结果列的平均值。

我有这个工作,当我想要在一列的数据范围,但现在有问题的范围在多列的数据。

我的电子表格看起来像这样:

在这里输入图像说明

在另一张表是所有的数据,基本上我试图得到$ FTSEMIB数据之间的结果的平均值在50和0.19之间,银行数据是在50和-15之间。

我能用这个平均值来做到这一点:

=AVERAGEIFS(Data!$BHV$10:$BHV$119,Data!$HQ$10:$HQ$119,"<"&G25,Data!$HQ$10:$HQ$119,">"&H25,Data!$TK$10:$TK$119,"<"&G26,Data!$TK$10:$TK$119,">"&H26) 

但我真的想通过使用Lookup或Sumproduct函数来调整它,它在F25和F26中查找标题,然后将范围应用到它们,然后只有在两个范围内都符合相邻结果的平均值。

我试图用这个数组公式来做到这一点,当时只有一个类应用范围,但现在我无法添加多个类

 =IFERROR(AVERAGE(IF((Data!$HQ$7:$LZ$7=F$25)*(Data!$HQ$11:$LZ$119>=$H25)*(Data!$HQ$11:$LZ$119<=$G25)*(Data!$BHV$11:$BHV$119<>"")*(Data!$QK$7:$UT$7=F$26)*(Data!$QK$11:$UT$119>=$H26)*(Data!$QK$11:$UT$119<=$G26),Data!$BHV$11:$BHV$119)),"") 

这个屏幕截图显示了我尝试复制你的设置:

在这里输入图像说明

D列中的公式基于以下步骤:

  1. find类别对应的列号

    MATCH(A2,F1:H1,0)

  2. 返回列中的数据

    INDEX(F2:H5,0,MATCH(A2,F1:H1,0))

  3. 根据返回的列计算结果的平均值

    AVERAGEIFS($ I $ 2:$ I $ 5 INDEX($ F $ 2:$ H $ 5,0,MATCH(A2,$ F $ 1:$ H $ 1,0)), “<” &B2,INDEX($ F $ 2:$ H $ 5,0,MATCH(A2,$ F $ 1:$ H $ 1,0)), “>” &C2)

  4. 现在为两列

    AVERAGEIFS($ I $ 2:$ I $ 5 INDEX($ F $ 2:$ H $ 5,0,MATCH(A2,$ F $ 1:$ H $ 1,0)), “<” &B2,INDEX($ F $ 2:$ H $ 5,0,比赛(A2,$ F $ 1:$ H $ 1,0)),“>”和C2,索引($ F $ 2:$ H $ 5,0,比赛(A3,$ F $ 1:$ H $ 1, 0)), “<” &B3,INDEX($ F $ 2:$ H $ 5,0,MATCH(A3,$ F $ 1:$ H $ 1,0)), “>” &C3)