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
我想旋转表格并按月(而不是按天)按月汇总
cost
,impressions
,clicks
和conversion
列:Month | Sum of cost | Sum of impressions | Sum of clicks | Sum of conversions
February | 7 | 14620 | 338 | 29
在Excel中,我只是使用了
Group by
函数,但是我发现它在Google表格中不可用。#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是标准日期
将格式设置为“自定义”,然后选择月/年。这将要求您删除日期设置。因此,当实际值是月份,月份,年份的第一天时,它将显示月份/年份。
数据透视表现在将所有相似的项目组合在一起,并以月份/年份显示列中的格式。
这样,随着时间的流逝,您将获得独特的价值。我本人决定隐藏有问题的列,因为我有一个与此文档相连接的文档,可以在添加前两行时提取前两行。 >
评论
截至2018年的正确答案是:webapps.stackexchange.com/a/120852