2017-02-21 111 views
1

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

我想统计星期一(和其他)的条目数量,以及周一(和其他)的查询总时长。

我有一个粗略的解决计数,使用sumproduct和星期几,只是定义范围以及我期望它应对(我不能使用A:A由于标题行,这令人沮丧),但我无法弄清楚第二部分。

+1

转换至一个表,所以你可以参考表列,例如'表格1 [标题名称]' – Jordan

+1

尝试使用格式作为表格来将当前表格转换/定义为excel表格中的数据。它不仅仅使它看起来漂亮。您可以通过给定的标题例如sum(table1 [SALES])来引用列,因此,如果您有100个销售条目或10000个销售条目,则无关紧要。我还允许您在表中创建一个公式列,并在每个新行中自动复制。如果您仍然不确定自己在说什么,请选择标题中的所有数据,然后单击主菜单上的格式化为表格按钮,然后选择一种样式。 – Gordon

+1

无论标题行如何,**从不**使用[SUMPRODUCT]中的A:A(https://support.office.com/zh-cn/article/sumproduct-function-4e0bffa7-4291-4635-a61f-6aaa9399e7ff) 。 – Jeeped

回答

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

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

+0

这很好,非常感谢。 1E + 99是什么意思? – Veganjackson

+0

'1e + 99'是一个非常大的数字;从字面上看,** 1 **接着99个零。它被使用,因为它永远不会被达到。这样,[MATCH](https://support.office.com/en-us/article/match-function-0600e189-9f3c-4e4f-98c1-943a0eb427ca)返回带有号码/日期的最后一行。如果你正在寻找最后的文本值,你可以使用'“zzz”'。 – Jeeped

+0

谢谢,这真的很有用,并且允许我添加基于文本的其他标准。我现在可以按月份和来源计算查询,非常好。 – Veganjackson

2

我去使它的动态列表的戈登的建议(你只需选择范围,然后按Ctrl + T和它的完成 - 所有的格式和公式将自动与新的数据线延伸)

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

我建议:

  1. 转换成表格:选择范围,按下Ctrl + T,勾选 “表具有头”,在弹出的对话框。
  2. 列表添加与WEEKDAY(表1 [日期]如式(可以在自定义格式格式化为“DDD”,显示为“星期一”等
  3. 下添加透视表到表和以星期为单位转动它

如果在表格底部添加行,公式将自行扩展,而数据透视表的源范围。你需要刷新数据透视表 - 但仅此而已。

output

希望它有助于

+2

手绘箭头和圆圈的奖励积分。 – Jeeped