按年份和月份总结分组

我有一个工作表移动两个领域:

mydate | amount 2009-01-01 | 10.00 2009-01-02 | 13.00 2009-02-01 | 11.00 2009-02-05 | 12.00 2009-02-08 | 52.00 

我希望在另一个工作表MonthSum中显示按列+ date的年份+月份分组的数据总和:

 mydate | amount 2009-01 | 23.00 2009-02 | 75.00 

我不想指定电子表格必须总和的单元格,我想要一个通用公式来将每个月+年的数据分组。 如果我在一个MySQL数据库上,我会简单地做:

 SELECT DATE_FORMAT('%Y-%m', mydate), SUM(amount) FROM mytable GROUP BY DATE_FORMAT('%Y-%m', mydate) 

我需要解决scheme在Google电子表格上工作。

我认为可能的解决scheme将使用SUMIF或数据透视表或谷歌电子表格查询function 。

你可以做一个数组公式,我把公式在A2A1 ,我把月份数:

 =ARRAYFORMULA(SUMPRODUCT(1*(MONTH(Sheet1!$A$2:$A$6)=A1)*Sheet1!$B$2:$B$6)) 

请参阅Google电子表格中的文档

[编辑]如果你想年份和月份:

 =ARRAYFORMULA(SUMPRODUCT(1*(YEAR(Sheet1!$A$2:$A$8)=A2)*(MONTH(Sheet1!$A$2:$A$8)=B2)*Sheet1!$B$2:$B$8)) 

这是数据透视表的作用。

我已经创build了一个使用你的数据的例子 。

首先,添加一个列来格式化date作为每月的string,例如“2009-01”,公式如下:

TEXT(A2, "YYYY-MM")

在这里输入图像说明


然后突出显示数据,然后select“数据”>“数据透视表报告…”

在这里输入图像说明


对于行,select“月”

在这里输入图像说明


对于值,select“金额”

在这里输入图像说明


TADA! 而已!

在这里输入图像说明

有关透视表的快速概述,请参阅此Google博客文章 。

除了来自JMax的贡献之外,让我使用QUERY函数提供以下公式…

 =query(index('Sheet3'!A:B); "select year(Col1)+(month(Col1)+1)/100,sum(Col2) where Col1 is not null group by year(Col1)+(month(Col1)+1)/100 label year(Col1)+(month(Col1)+1)/100 'mydate',sum(Col2) 'amount' ") 

注意:我假设原始数据是在Sheet3中,而我的结果显示年月组合为yyyy.mm而不是yyyy-mm我创build了一个插图:

修道者

我正在处理类似的问题。 我发现这个公式运作良好。

 =SUMIF(ARRAYFORMULA(MONTH('Sheet1'!A:A)), A2, 'Sheet1'!B:B) 

A2单元我把我想要的总计。