【问题标题】:aggregate results by week, month for graphing using sheets按周、月汇总结果以使用表格绘制图表
【发布时间】:2018-03-22 20:18:05
【问题描述】:

有没有办法将每日值转换为图表的每周平均值?

示例源表

---------------------------------------------------
| Data 1 | 1/1/2018 | 1/2/2018 | 1/3/2018 | etc...365 days |
---------------------------------------------------
| row 1  |    25    |   30     |    5     | etc...| 
---------------------------------------------------
| row 2  |    2     |          |    4     | etc...|
---------------------------------------------------
| etc ... each row has a different cadence.

除此之外,每一行可能不是每天都有值,而是每周或每月都有值,具体取决于节奏。所以我想使用查询函数将一些行聚合为周,将一些行聚合为月。

预期结果 对于每周汇总(如果有超过 1 个值,我只想要一周的平均值,即:如果一周内有值:2、3、3,只需显示:2)

---------------------------------------------------
| Data 1 | Week 1 | Week 2 | Week 3 | etc...52 weeks |
---------------------------------------------------
| row 1  |    25  |   30   |    5   | etc...| 
---------------------------------------------------
| row 2  |    2   |   0    |    4   | etc...|
---------------------------------------------------
| etc ... 

对于每月汇总(如果有超过 1 个值,我只想要该月的平均值,IE;如果一个月内有值:25,50,100,只需显示:58)

---------------------------------------------------
| Data 1 | Jan | Feb | Mar | etc...12 months |
---------------------------------------------------
| row 1  | 50  | 30  |  55 | etc...| 
---------------------------------------------------
| row 2  | 2   |  0  | 4   | etc...|
---------------------------------------------------
| etc ...

这样,我可以创建显示正确计量单位(周、月等)的图表。我怎样才能转换?

【问题讨论】:

  • 您是否尝试过设置数据透视表?
  • 不,我看不出枢轴在这里有什么帮助。请解释一下。
  • 数据透视让您可以获取每日数据,并根据您选择的标准提供汇总视图。例如,如果您根据日报计算周数,您可以按周分组,并可以显示基于周的汇总数据。几个月、几年等也是如此。
  • 我看不出pivot如何将每日价值总结为每月平均值,你能进一步解释一下吗?
  • Excel 数据透视表提供原生分组功能,在 Google 表格中,您需要自己定义分组值 - 即您可以为 =WEEKNUM( ... ) 等添加行,您可以将其指向每日日期单元格。请参阅webapps.stackexchange.com/questions/56780/… 和其他相关问题

标签: google-sheets spreadsheet google-sheets-query


【解决方案1】:

几个月:

=TRANSPOSE( QUERY( TRANSPOSE(Sheet1!A1:Y4), "select month(Col1) + 1, avg(Col" & JOIN("), avg(Col",ARRAYFORMULA(row(INDIRECT("a2:a"&COUNTA(Sheet1!A2:A)+1)))) & ") group by month(Col1) + 1") )

select 部分将产生如下查询字符串:

"select month(Col1) + 1, avg(Col2), avg(Col3), ... group by month(Col1) + 1"

结果:

sum(month(Data1)1())    1     2 ...
avg row1               50    50
avg row2               25    13
avg row3               11    15 ...
...

【讨论】:

  • 你似乎明白我在追求什么。这是我根据您的示例尝试的公式=TRANSPOSE(QUERY(TRANSPOSE('List'!$A:$ZZT),"select month(Col1) + 1, avg(Col" & JOIN("), avg(Col",ARRAYFORMULA(row(INDIRECT("A2:A"&COUNTA('List'!$A:$ZZT)+1)))) &") group by month(Col1) + 1")) 并产生值错误Unable to parse query string for Function QUERY parameter 2: NO_COLUMN: Col1008
  • filter('List'!$A:$ZZT, 'List'!$A:$A <>"")替换'List'!$A:$ZZT
【解决方案2】:

一周:

=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
 {ARRAYFORMULA(TRANSPOSE(WEEKNUM($A$1:$AE$1, 2))),
  TRANSPOSE($A2:$AE2)},
 "select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)

月份:

=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
 {ARRAYFORMULA(TRANSPOSE(MONTH($A$1:$AE$1))),
  TRANSPOSE($A2:$AE2)},
 "select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    相关资源
    最近更新 更多