在日期列表中计算事件的天数和持续时间

时间:2017-02-21 16:17:15

标签: excel excel-formula

我有两列,一列是日期列表,另一列是持续时间列表。这些构成了不断添加的查询日志的一部分,因此没有明确定义的范围。

我想计算星期一(等等)的参赛作品数量,以及星期一(等等)的总观看时间。

我有一个粗略的计数方法,使用sumproduct和工作日,只是定义范围以及我期望它必须处理的范围(我不能使用A:A因为标题行,这令人沮丧)但我根本无法弄清楚第二部分。

3 个答案:

答案 0 :(得分:2)

我赞同Gordon的建议,即将其设为动态列表(您只需选择范围并按Ctrl + t即可完成 - 所有格式和公式都将自动扩展新数据行)

不知道那张桌子有多大,但有条件的sumproduct很快变得非常沉重。

我建议:

  1. 转换为表:选择范围,按Ctrl + T,在弹出的对话框中勾选“表有标题”。
  2. 使用WEEKDAY(Table1 [Date]作为公式在表格中添加一列(您可以在自定义格式中将其格式化为“ddd”以显示为“Mon”等
  3. 在表旁边添加一个数据透视表,并按工作日
  4. 进行数据透视

    您可以获得更多的灵活性,而不是将其作为一次性在单元格中进行生产。如果在表格底部添加线条,公式将自行扩展,因此会旋转表格的源范围。你需要刷新数据透视表 - 但这就是全部。

    output

    希望有所帮助

答案 1 :(得分:1)

您更正确,您可以使用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

COUNT您可以使用的星期一:

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

SUM周一的持续时间,您可以使用:

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

答案 2 :(得分:1)

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

计算星期一,

=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 )))

示例:

enter image description here

或者,使用类似的公式定义命名的动态范围。