我有一个Excel表格,其中包含有关人们活跃时间的数据。我有开始时间和结束时间。我想知道的是,表中所有日子里每小时有多少人活跃。不是每天每小时,每小时,基本上看哪个小时是最常用的
我的数据有:
05/24/2015 18:00 05/24/2015 18:00
05/24/2015 18:00 05/24/2015 18:00
05/24/2015 18:01 05/24/2015 18:01
05/24/2015 18:01 05/24/2015 18:01
05/25/2015 18:02 05/25/2015 18:27
05/24/2015 19:00 05/24/2015 19:01
05/24/2015 20:19 05/24/2015 20:19
05/24/2015 21:00 05/24/2015 21:00
05/26/2015 21:00 05/26/2015 21:00
05/27/2015 21:00 05/27/2015 23:01
有些数据非常短,而有些则非常长。从上面我们可以说:
18:00 - 5
19:00 - 1
20:00 - 1
21:00 - 3
22:00 - 1
23:00 - 1
从最后一个条目中可以看出,它跨越了三个小时,应该相应计算。
有没有办法通过数据透视表或其他功能来实现?
更新:更新数据,使结束日期在第一部分之后。此外,数据分为2列而不是4列。
答案 0 :(得分:0)
UNTESTED
没有数组公式/ e的一种方法是创建矩阵并对值求和。对于此,首先将日期/时间拆分为单独的列以显示日期和时间(例如,使用文本到列)。然后在每小时的开头添加一行(例如Row1),包括第二天的开始。
如下公式:
=IF(AND($B2>=F$1,$B2<G$1),1,0)+IF(AND($D2>E$1,G$1>$B2+1/24,HOUR($B2)<>HOUR($D2)),1,0)
在示例中的F1中,横向和向下复制以适应。
总结如下:
=IF(SUM(F2:F11)=0,"",SUM(F2:F11))
在示例中的F12中,并复制到适合。
我希望是 PT解决方案。
答案 1 :(得分:0)
你将不得不处理一些事情;特别是 19:00 的值,解析为 0.791666666666667 或 23:00 ,解析为 0.958333333333333 。您还必须在时间上添加一个小时,以便您可以参考上限。
TIME(1, 0, 0)
)或甚至一小时减去一秒(例如TIME(1, 0, -1)
)。使用MROUND function将所有内容四舍五入到最近的秒。此功能允许您指定四舍五入的增量,我们将使用TIME(0,0,1)或一秒的间隔。
E3中的公式是,
=SUMPRODUCT(SIGN((MROUND(MOD(A$2:A$11, 1), TIME(0, 0, 1))>=MROUND(D3, TIME(0, 0, 1)))*(MROUND(MOD(B$2:B$11, 1), TIME(0, 0, 1))<MROUND(D3+TIME(1, 0, 0), TIME(0, 0, 1)))+(MROUND(MOD(A$2:A$11,1),TIME(0,0,1))<=MROUND(D3,TIME(0,0,1)))*(MROUND(MOD(B$2:B$11,1),TIME(0,0,1))>=MROUND(D3, TIME(0,0,1)))))
由于这实际上是OR
的一种形式,两种条件都可能是真的,我使用SIGN function来确定是否计算条目。我在D3中使用了=TIME(ROW(18:18), 0, 0)
。必要时填写。
如果有一些奇怪的数据条目似乎产生了错误的计数,请将您的样本数据附加到原始问题中,我将尝试解决异常问题。
我不知道你要引用多少行,但我建议将引用的单元格区域保持在最小值,并且从不完整的列引用。