我目前有一个电子表格,在行数统计时将没有设置大小。我有一段时间用于填写条目的时间段。
例如:
Transition Time State Reason Code Duration
06/01/2015 06:43 AM Logged-in 0 0:00:00
06/01/2015 06:43 AM Not Ready 32760 0:00:43
06/01/2015 06:44 AM Logout 5 0:00:00
06/01/2015 06:46 AM Logged-in 0 0:00:00
06/01/2015 06:46 AM Not Ready 32760 0:01:47
06/01/2015 06:47 AM Ready 0 0:00:00
06/01/2015 06:47 AM Reserved 0 0:00:06
06/01/2015 06:48 AM Talking 0 0:06:59
06/01/2015 06:55 AM Not Ready 6 0:02:58
06/01/2015 06:58 AM Ready 0 0:00:00
06/01/2015 06:58 AM Reserved 0 0:00:01
06/01/2015 06:58 AM Talking 0 0:09:18
06/01/2015 07:07 AM Work 0 0:00:05
现在,这将继续贯穿整个报告。通常它是一个月,但可以更长。我能够根据其他列获取月份的值。
例如:
=SUMPRODUCT(--(C:C=6),--(B:B="Not Ready"),(D:D))
这将给我整个报告的价值。我需要在这里一次计算1天。
伪:
DateTime selectedDay = current row
DateTime currentDay = current day from row;
foreach(DateTime day in Transition Time)
{
if(selectedDay <= currentDay)
{
//SUM to CELL - Array prefered
}
else if(selectedDay > currentDay)
{
currentDay = selectedDay
}
}
答案 0 :(得分:0)
请考虑以下公式,以计算单位H2
中按日期设置的特定日期的原因代码为6的总用户“未就绪”的总持续时间(以秒为单位):
{=(SUM(IF(((B:B="Not Ready")*(IFERROR(INT(A:A),0)=H2)*(C:C=6))=1,TIMEVALUE(D:D),0)))*86400}
请注意,使用CTRL
+ SHIFT
+ ENTER
输入公式作为数组公式时,不会手动输入大括号。
我已经利用能够在整个数组中计算AND
正在计算的布尔值(真或假,1或0)。这给了我一个满足所有条件的行。使用IF(array=1,"Duration range")
我能够提取所有相关值并在整个最终数组中使用SUM
并乘以86400(一天中的秒数)以得出最终计算结果。的问候,