我有一个Google表格,其中包含每天的各种指标。每天都有自己的一行:

day        | cost | impressions | clicks | conversions
2014-02-01 |   | 3,540       | 80     | 5
2014-02-02 |   | 3,700       | 88     | 7
2014-02-03 |   | 3,440       | 79     | 7
2014-02-04 |   | 3,940       | 91     | 10


我想旋转表格并按月(而不是按天)按月汇总costimpressionsclicksconversion列:

Month        | Sum of cost | Sum of impressions | Sum of clicks | Sum of conversions
February     | 7        | 14620              | 338           | 29


在Excel中,我只是使用了Group by函数,但是我发现它在Google表格中不可用。

评论

截至2018年的正确答案是:webapps.stackexchange.com/a/120852

#1 楼

使用Data->Pivot table report...可以完全满足您的要求。
您可能必须使用“新Google表格”。
我将其用作默认设置,很容易实现您的要求想要的,类似于Excel。
在我的答案中,我解释了如何启用新的电子表格。


我似乎并没有完全理解问题。

首先,我们需要一个月。为此,添加一个新列以使用=MONTH(DATE_COLUMN)提取日期。


然后创建数据透视报表:


评论


尝试过“新的Google表格”,并且在透视表报表中没有选择按月对日期进行分组的方法,也许您可​​以了解一下?

–鲍格丹
2014年10月10日22:06

抱歉,我认为主要的问题是您根本找不到分组。那么,为什么不添加仅提供月份并按月份分组的列呢?

– StampedeXV
2014年3月11日在7:24

不幸的是,我无法添加另一列或更改源工作表的格式,因为它已用于为Cyfe中的仪表板供电,但是感谢您的回答...

–鲍格丹
2014年3月11日在22:23

您可以添加列,然后将其隐藏以使其不可见。您仍然可以在“数据透视”报表中使用它。

– StampedeXV
2014年3月12日在7:15

好主意。我尝试过,但是Cyfe似乎无法忽略隐藏的列。我只需要维护2个带有源数据的重复表即可解决此问题。

–鲍格丹
2014年3月12日上午11:46

#2 楼

Google表格现在支持将其作为“创建数据透视日期组”
,在数据透视表中,将日期/时间列添加为行后:

右键单击其中一个值在“数据透视表”中,
选择“创建数据透视日期组”
选择所需的分组(例如,“月”或“年月”)

之前+可视示例:

之后:

更多信息

有关此功能的Google文档:https://support.google.com/docs/answer/ 7572895



评论


这应该是正确的答案

–senseiwu
18-10-5在7:23

到目前为止,这是迄今为止最好的答案

–卡尔文
18-10-17在23:31

我可以将自己的公式与数据透视表一起使用吗?我想获得分位数

–Hubert Grzeskowiak
19年7月9日在2:08

我的日期栏中没有看到此选项

–伊恩·赫兹(Ian Hyzy)
19年9月3日在15:49

@IanHyzy我对此也感到困惑-找不到选项。然后意识到这是在创建数据透视表之后,右键单击数据透视表中的任何日期(而不是具有原始数据的工作表上的日期),希望对您有所帮助!

–paulvs
20年7月4日在21:15



#3 楼

没有帮助列:

=query(A:E,"select sum(B), sum(C), sum(D), sum (E) group by month(A) offset 1")  


假设day位于A1中。我可以。

评论


这听起来真的很有用。您能解释一下它是如何工作的吗?我从未使用过查询功能。

–肖恩·威尔逊(Shawn V. Wilson)
18年5月10日在20:10



是否可以按月和年分组?

–Hubert Grzeskowiak
19年7月9日在2:08

@HubertGrzeskowiak是的,这是

–李·泰勒(Lee Taylor)
19年7月21日在15:18

#4 楼

因此,对于那些与我提出类似问题的人,
显然Google表格中还没有针对Pivot的“组”字段功能(与Excel中一样)。
因此,最简单的方法是添加另一列,将日期转换为所需的组,例如数周,数月,数年...
希望该功能也很快会出现在Google表格中。

#5 楼

我发现的一种更简单的方法是将日期单元格转换为新列中的文本。 >

#6 楼

以前的答案对我都不起作用,因为我使用表格作为输入。您不能在表单上添加公式。

这是我的解决方法。

阅读以上内容,数据透视表需要一列带有月份的列来进行选择。您可以使用其他条件,例如星期或星期五。或是John,Doe,Foo或bar。无论您要“分组”什么。

在我的情况下:日期在B中,=month(B2)给出了月份。因此,我需要使用=month(B2)附加一列。

表格不允许使用公式。在具有表单的工作表上,您不能添加带有公式的列(确切地说:可以,但是新的表单项会删除相应行上的公式)。

第二个工作表

带有=page1!A1等的简单第二张表并添加列月份也有相同的问题。形式为=>的新条目将添加一行。

解决方案

所以我执行了以下操作。


添加了一张额外的纸
在A1上使用了=importrange("longkeynumber";"sheet form!A1:E1000")
(importrange可以导入其他文档,但是…可以用)
在F中,使用过的=if(B3>0;(MONTH(B3));"")

在表A中添加额外数据时,表B中具有importrange的公式会保持不变。
现在,您可以添加数据透视表,在这种情况下,F作为行或列。


评论


在user165410的答案中,他指出:-在F中,使用= if(B3> 0;(MONTH(B3));“”)这是一个很好的解决方案,但可以使它变得更加容易:-在F3中,= arrayformula( if(b3:b> 0;(month(b3:b));“”))这将自动将每个非空单元格的月份置于B3:B范围内。插入或删除行,或移动行都不会破坏公式!

– Stefan van Aalst
16-2-10在13:58



将新的响应添加到电子表格后,将插入新的一行。可以使用数组公式(结果为多个值)或标量公式(结果为单个值)。另一方面,当源数据来自同一文件时,可以使用数组公式返回与IMPORTRANGE相同的结果,并且它们会立即更新

–鲁本♦
16-11-3在16:40



我喜欢这个解决方案!在F3中,= arrayformula(if(b3:b> 0;(month(b3:b));“”))唯一的问题是,当数据超过一年且每个月与前一年。

– Vic M
19年3月29日在21:29

#7 楼

如果您已经添加了新列,则也可以使用eomonth("reference cell",0)。那将总是抓住一个月的最后一天。或eomonth("reference cell",-1)+1获取月初。

使用这种方法而不是转换为文本的好处在于,当您旋转数据时。它将自动从左到右升序排列。

#8 楼

我找到了我更喜欢的方式。我只是按照以下步骤创建了一个隐藏列:




从每月的每一天到每月的第一天。


= A2-天(A2)+1,其中A2是标准日期



将格式设置为“自定义”,然后选择月/年。这将要求您删除日期设置。因此,当实际值是月份,月份,年份的第一天时,它将显示月份/年份。
数据透视表现在将所有相似的项目组合在一起,并以月份/年份显示列中的格式。

这样,随着时间的流逝,您将获得独特的价值。我本人决定隐藏有问题的列,因为我有一个与此文档相连接的文档,可以在添加前两行时提取前两行。 >