问题描述
我试图将满足特定条件的列的平均值放入单个单元格中。 以下公式有效:=AVERAGEIFS(tblData[Sys],tblData[Time],">=12:00 PM","=6:00 PM","
解决方法
这个公式似乎适用于您的情况。它检查结束时间早于开始时间(但在第二天)的可能性并相应地更改逻辑:
=AVERAGE(
IF(
IF(tmStart>=tmEnd,(tblData[Time]>=tmStart)+(tblData[Time]<=tmEnd),(tblData[Time]>=tmStart)*(tblData[Time]<=tmEnd))
=1,tblData[Sys],""))
,
了解此功能的作用很重要,其基本意图是 - 我在下面详细说明,提供可行的解决方案,提供对帐,以及指向工作簿的链接,下面的屏幕截图。
您需要指定 # 天跨度 - 即使是对您“有效”的场景(即 =AVERAGEIFS(tblData[Sys],tblData[Time],">=12:00 PM","<6:00 PM")
理论上也可以跨越 2 天(或更多)天。这“有效”的事实(不返回 #DIV/0!)是条件的“交集”是非空集(即 {12pm-5pm})。
正如我所说,如果这是从第 1 天到“=12:00”,则无法通过简单的“比较时间”来确定是否确实如此'(例如 12 点对 6 点)。
截图/here 参考::
=IF($I$5="Y",(SUM(1*($C$5:$C$28*(($D$5:$D$28>=$J$3)+1*($D$5:$D$28<$K$3)))))/SUM((($D$5:$D$28>=$J$3)+1*($D$5:$D$28<$K$3))),IFERROR(AVERAGEIFS(C5:C28,D5:D28,">="&J3,"<"&K3),"times don't intersect! "))
其中:I5 = 'Y' 或 'N'(即多天)。选择方案B时,有多个天='y',结果= 12.9,它与手动计算协调。