Excel AVERAGEIFS else语句

我试图对一些数据执行AVERAGEIFS公式,但有2个可能的结果,据我可以告诉AVERAGEIFS不处理这种情况。
我基本上想在里面有一个ELSE。

目前我有2个范围的数据:

  • 第一栏只包含“MT”和“F”(周一到周四和周五)。
  • 第二列包含时间。

列1中'F'值的行的时间比其余部分小一个小时。

我想要平均每个星期五的时间延迟。

因此,举例来说,我希望它取得所有时间的平均值,但是从其中具有“F”值的行中减去1小时。

到目前为止,我一直在做的方法是每天有两个单独的结果,然后再次对最后一个结果进行平均:

=AVERAGEIFS(G3:G172, B3:B172, "MT") =AVERAGEIFS(G3:G172, B3:B172, "F") 

我想把这个结合成一个结果。
我能得到的最接近的是:

 =AVERAGE(IF(B3:B172="MT",G3:G172,((G3:G172)-1/24))) 

但是这不会产生正确的结果。

有什么build议?

尝试这个

  =(SUMPRODUCT(G3:G172)-(COUNTIF(B3:B172,"=F")/24))/COUNTIF(B3:B172,"<>""""") 

快照显示样本数据的公式

编辑根据快照中的示例数据解释公式中的各个步骤。

  • SUMPRODUCT(G3:G17)总结了从G3到G17的全部价值。 它给出了一个值为4.635416667。 格式化为[h]:mm后的值为111.15
  • OP希望星期五时间less一小时。 所以我在样本数据中保留了一个小时的星期五。 H3:H17上的相似SUMPRODUCT导致值为4.510416667。 格式化为[h]:mm后的值为108.15。 在样本数据中,每周五发生三次的时间less了三个小时。
  • =COUNTIF(B3:B17,"=F")计算在B3:B17范围内出现3次的星期五的发生次数。所以3小时的次数必须less于3次。 这些小时数将以24小时表示,因此函数COUNTIF()值除以24得出0.125。 同样是4.635416667和4.510416667的差值,即0.125
  • 示范栏H仅用于说明目的。 事实上星期五占样本数据中的108.15的值必须除以总数据点以得到平均值。 数据点的出现通过=COUNTIF(B3:B17,"<>""""") ,并检查空列。
  • 因此108:15除以15个数据点给出7:13的答案。

    修改编辑基于@Tom Sharpe的build议

@TomSharpe非常友好地指出了我提出的方法中的缺点。 COUNTIF(B3:B172,"<>""""")给出的值太多,不build议使用。 而不是COUNTA(B3:B172)COUNT(G3:G172) 。 根据他的build议更好的公式得到AVERAGE给出非常准确的结果,并修改为:

  =AVERAGE(IF(B3:B172="MT",G3:G172,((G3:G172)-1/24))) 

这是一个数组公式。 它必须被inputCSE和更多的单元格格式化。

如果您的MTF列被命名为Day并且您的时间列被命名为TIME那么:

 =SUMPRODUCT(((Day="MT")*TIME + (Day="F")*(TIME-1/24)))/COUNT(TIME) 

一个简单的解决scheme是创build一个单独的列,它映射时间列并在那里执行调整。 然后平均这个新的专栏。

这是一个select吗?

最终结合两个平均数。 不知道为什么我从一开始就不这样做:

 =((AVERAGEIFS(G$3:G171, $B$3:$B171, "F")-1/24)+AVERAGEIFS(G$3:G171, $B$3:$B171, "MT"))/2