在一小时内找到所有数据点

时间:2015-05-31 21:26:10

标签: excel pivot-table

我有一个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列。

2 个答案:

答案 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中,并复制到适合。

SO30562881 example

我希望 PT解决方案。

答案 1 :(得分:0)

你将不得不处理一些事情;特别是 19:00 的值,解析为 0.791666666666667 23:00 ,解析为 0.958333333333333 。您还必须在时间上添加一个小时,以便您可以参考上限。

  1. 要添加一小时,请使用TIME function。这可以让您轻松添加一小时(例如TIME(1, 0, 0))或甚至一小时减去一秒(例如TIME(1, 0, -1))。
  2. 使用MROUND function将所有内容四舍五入到最近的秒。此功能允许您指定四舍五入的增量,我们将使用TIME(0,0,1)或一秒的间隔。

    Time Counted by the hour

  3. 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)。必要时填写。

    如果有一些奇怪的数据条目似乎产生了错误的计数,请将您的样本数据附加到原始问题中,我将尝试解决异常问题。

    我不知道你要引用多少行,但我建议将引用的单元格区域保持在最小值,并且从不完整的列引用。