Google表格:每个工作日的平均持续时间数据

时间:2018-04-23 09:34:06

标签: date google-sheets pivot-table

我有日期/持续时间数据,例如:

16-Apr  (Mon)  30mins

16-Apr  (Mon)  90mins

17 Apr (Tue) 60 mins

19-Apr (thu) 15 mins 

19-Apr (thu) 20 mins 

19-Apr (thu) 20 mins

21-April (Sat ) 120 mins  

23-April (Mon) 60 mins 

24-Apr (Tue)15 mins

我想生成每个工作日的平均持续时间

带有日期的数据透视表可以为我提供每个日期的持续时间总和。

(衍生的)星期几的数据透视表给出了一周中某一天的条目数的平均值,例如:在上面,星期一= 3个条目,我想要平均2(日期)。

我想要的是Mondays = x minsTues= y minsWed =z mins等。

这可以使用数据透视表或数组公式一步完成吗?

2 个答案:

答案 0 :(得分:2)

假设您的日期在E列,而持续时间在F

此公式将按星期几为您提供摘要:

=query({arrayformula(weekday(E2:E7)), arrayformula(n(F2:F7))},
       "select Col1, sum(Col2) group by Col1")

要获得平均值,请使用avg(Col2)代替sum(Col2)。您仍然必须将第二个结果列格式化为持续时间,并找到一种方法将星期几从数字转换为文本,但这可以作为练习留给读者: - )

enter image description here

答案 1 :(得分:1)

您可以这样做来添加标签

=ArrayFormula(query({hlookup(weekday(A:A),{1,2,3,4,5,6,7;"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"},2,false),B:B},"select Col1,avg(Col2) group by Col1 label Col1 'Day'"))

enter image description here

C栏中的日期数字仅用于检查。

如果缺少任何日期,则需要忽略它们,否则它们将被视为星期六...

=ArrayFormula(query({A:A,hlookup(weekday(A:A),{1,2,3,4,5,6,7;"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"},2,false),B:B},"select Col2,avg(Col3) where Col1 is not null group by Col2 label Col2 'Day'"))

修改

好的,这是实际要求的答案,即每个工作日的持续时间总和除以工作日的唯一日期数。

=ArrayFormula(query({query({C2:C,weekday(C2:C),choose(weekday(C2:C),"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"),E2:E},"select Col3,sum(Col4) where Col1 is not null group by Col2,Col3"),
query({unique(C2:C),weekday(unique(C2:C))},"select count(Col2) where Col1 is not null group by Col2")},"Select Col1,Col2/Col3 label Col1 'Day',Col2/Col3 'Average'"))

enter image description here

备注

(1)基于唯一日期的组数与基于重复日期的组数完全相同。

(2)为了以正确的顺序(周日,周一,周二......)获取日期名称,我将工作日编号(1-7)和工作日名称(第一个内部查询中的Col2,Col3)分组。除了使用Col3之外,这不再创建任何组,但具有以工作日数字顺序而不是工作日名称(按字母顺序)顺序排列日期的效果,同时仍允许您将Col3(工作日名称)放入选择列表中。 / p>

(3)包括@ ttarchala建议使用Choose而不是Hlookup。