我试图对某些数据执行AVERAGEIFS公式,但有两种可能的结果,据我所知,AVERAGEIFS无法处理这种情况。
我基本上想在里面放一个ELSE。
目前我有2个数据范围:
' 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)))
但这并没有产生正确的结果。
有什么建议吗?
答案 0 :(得分:1)
试试这个
=(SUMPRODUCT(G3:G172)-(COUNTIF(B3:B172,"=F")/24))/COUNTIF(B3:B172,"<>""""")
修改强> 根据快照中的示例数据解释公式中的各个步骤。
=COUNTIF(B3:B17,"=F")
计算B3:B17范围内星期五的出现次数为3次。此时3小时必须更少。这些小时数用24小时表示,因此函数COUNTIF()
除以24得到0.125。同样是4.635416667和4.510416667的差异,即0.125 =COUNTIF(B3:B17,"<>""""")
计算,并检查空列。因此,108:15除以15个数据点,答案为7:13。
修订编辑根据@Tom Sharpe的建议
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-T
和F
列名为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