在date列表中计算date和事件的持续时间

我有两列,一列是date列表,另一列是持续时间列表。 这些构成查询日志的一部分,不断被添加到,所以没有明确的范围。

我想统计周一(等)的参赛次数,以及星期一(和其他)的总查询时间。

我有一个粗略的解决计数,使用sumproduct和weekday,只是定义范围以及我期望它必须应付(我不能使用A:A,因为标题行,这是令人沮丧的),但我根本搞不清第二部分。

我按照Gordon的build议把它做成一个dynamic列表(你只需select范围,然后按下Ctrl + t即可完成 – 所有的格式和公式将自动扩展到新的数据行)

不知道这张桌子有多大,但有条件的产品会很快变得非常沉重。

我build议:

  1. 转换成表格:select范围,按下Ctrl + T,在popup的对话框中勾选“表头”。
  2. 用WEEKDAY(Table1 [Date])公式将一列添加到表中(可以在自定义格式中将其格式化为“ddd”以显示为“Mon”等
  3. 在表格旁边添加一个Pivot表格,并在Weekday中进行转换

你得到的总数要比在一个单元中作为一个单元来产生更多的灵活性。 如果在表格底部添加行,则公式将自行扩展,并且数据透视表的源范围也会扩展。 你需要刷新数据透视表 – 但就是这样。

产量

希望能帮助到你

你是正确的,你可以使用SUMPRODUCT

假设你的表格看起来如下(并且表格不是范围):

 Date | Duration 20/02/2017 | 5 '<--- Monday 21/02/2017 | 5 22/02/2017 | 5 23/02/2017 | 5 24/02/2017 | 5 25/02/2017 | 5 26/02/2017 | 5 27/02/2017 | 5 '<--- Monday 28/02/2017 | 5 

让我们调用表格Table1

要计算您可以使用的星期一:

 =SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*1) 

为了SUM星期一的持续时间,你可以使用:

 =SUMPRODUCT((WEEKDAY(Table1[Date],2)=1)*(Table1[Duration])) 

使用a$2:index(a:a, match(1e99, a:a))来定义date范围。

要计算星期一,

 =SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2)) 

为了总结星期一的时间,

 =SUMPRODUCT(--(WEEKDAY(A$2:INDEX(A:A, MATCH(1E+99,A:A )))= 2), B$2:INDEX(B:B, MATCH(1E+99,A:A ))) 

例:

在这里输入图像描述

或者,使用相似的公式定义命名的dynamic范围。