按周、月汇总结果以使用工作表绘图
aggregate results by week, month for graphing using sheets
有没有办法将每日值转换为每周平均值以制作图表?
样本来源sheet
---------------------------------------------------
| 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 ...
这样,我可以创建显示正确度量单位(周、月等)的图表。我该如何转换?
几个月:
=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 ...
...
一周:
=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
{ARRAYFORMULA(TRANSPOSE(WEEKNUM($A:$AE, 2))),
TRANSPOSE($A2:$AE2)},
"select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)
月份:
=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
{ARRAYFORMULA(TRANSPOSE(MONTH($A:$AE))),
TRANSPOSE($A2:$AE2)},
"select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)
有没有办法将每日值转换为每周平均值以制作图表?
样本来源sheet
---------------------------------------------------
| 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 ...
这样,我可以创建显示正确度量单位(周、月等)的图表。我该如何转换?
几个月:
=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 ...
...
一周:
=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
{ARRAYFORMULA(TRANSPOSE(WEEKNUM($A:$AE, 2))),
TRANSPOSE($A2:$AE2)},
"select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)
月份:
=ROUND(AVERAGE(ARRAYFORMULA(VALUE(QUERY(
{ARRAYFORMULA(TRANSPOSE(MONTH($A:$AE))),
TRANSPOSE($A2:$AE2)},
"select Col2 where Col1 matches '"&COLUMN()&"'", 0)))), 0)