Excel AVERAGEIFS else语句

时间:2016-06-24 09:02:19

标签: excel

我试图对某些数据执行AVERAGEIFS公式,但有两种可能的结果,据我所知,AVERAGEIFS无法处理这种情况。
我基本上想在里面放一个ELSE。

目前我有2个数据范围:

  • 第一列仅包含值' M-T'和' F' (周一至周四和周五)
  • 第二列包含时间。

' F'行上的时间第1列中的值比其余部分落后一小时。

我想平均一次,调整星期五的小时延迟。

因此,例如,我希望它能够平均占用所有时间,但是从“F' F'行中的值中减去1小时。它的价值。

到目前为止,我一直在做的方法是每天分别获得2个不同的结果,然后将它们再次平均化为最终结果:

=AVERAGEIFS(G3:G172, B3:B172, "M-T")
=AVERAGEIFS(G3:G172, B3:B172, "F")

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

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

但这并没有产生正确的结果。

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

试试这个

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

Snapshot showing formula on sample data

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

  • SUMPRODUCT(G3:G17)总结了从G3到G17的所有值。它给了一个 值4.635416667。格式化为[h]:mm后,这会给出一个值 111.15
  • OP希望星期五的时间少一个小时。所以我在周五的样本数据中减少了一个小时。类似于H3:H17的SUMPRODUCT导致值为4.510416667。格式化为[h]:mm后,这会给出一个值 108.15。对于样本数据中的三次星期五,这恰好少了三个小时。
  • =COUNTIF(B3:B17,"=F")计算B3:B17范围内星期五的出现次数为3次。此时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的建议

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

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

这是一个数组公式。它必须与CSE一起输入,并进一步格式化为时间格式。

答案 1 :(得分:1)

如果您的M-TF列名为Day且您的时间列名为TIME,则:

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

答案 2 :(得分:0)

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

这是一个选择吗?

答案 3 :(得分:0)

结合两个平均值结束。不知道为什么我从一开始就没有这样做:

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