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和更多的单元格格式化。
如果您的MT
和F
列被命名为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