我需要根据excel中另一列中的一天中的时间平均一列中的单元格,即早上,下午和晚上

问题描述

我试图将满足特定条件的列的平均值放入单个单元格中。 以下公式有效:=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],""))

enter image description here

,

了解此功能的作用很重要,其基本意图是 - 我在下面详细说明,提供可行的解决方案,提供对帐,以及指向工作簿的链接,下面的屏幕截图。

您需要指定 # 天跨度 - 即使是对您“有效”的场景(即 =AVERAGEIFS(tblData[Sys],tblData[Time],">=12:00 PM","<6:00 PM") 理论上也可以跨越 2 天(或更多)天。这“有效”的事实(不返回 #DIV/0!)是条件的“交集”是非空集(即 {12pm-5pm})。

正如我所说,如果这是从第 1 天到“=12:00”,则无法通过简单的“比较时间”来确定是否确实如此'(例如 12 点对 6 点)。

截图/here 参考::

Screenshot - scenario B,Multiple days = 'Y'

=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,它与手动计算协调。