如何在Google表格中按月对数据进行分组


38

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

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

我想转动表和总结costimpressionsclicksconversion按月(而不是由日)是这样的:

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

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


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

Answers:


18

使用Data->Pivot table report...你问究竟什么优惠。您可能必须使用“ 新的Google表格 ”。
我将其用作默认设置,可以轻松实现所需的功能,类似于在Excel中。

在我的答案,我解释如何启用新的电子表格。


看来我没有完全理解问题。

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

在此处输入图片说明

然后创建数据透视报表:

在此处输入图片说明


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

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

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

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

好主意。我尝试过,但是Cyfe似乎无法忽略隐藏的列。我只是将不得不维持2个与源数据复制表来解决这个....
波格丹

30

Google表格现在将其作为“创建数据透视日期组”来支持

将日期/时间列添加为一行后:

  1. 右键点击数据透视表中的值之一,
  2. 选择“创建数据透视日期组”
  3. 选择所需的分组(例如“月”或“年月”)

之前+视觉示例:

分组之前先进行数据透视表

后:

在此处输入图片说明

更多信息


这应该是正确的答案
–Senseiwu

到目前为止,这是迄今为止最好的答案
卡尔文(Calvin)

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

3
我在日期栏中没有看到此选项
Ian Hyzy

5

没有助手列:

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

假设day在A1中。

在描述上述内容的工作方式方面,比以往任何时候都做得更好的文档


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

是否可以按月和年分组?
Hubert Grzeskowiak

@HubertGrzeskowiak是的,这是
Lee Taylor

4

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


2

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

=Text(A1, "mmm-yy")

然后,您可以进行数据透视,它将按月分组。


1

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

这是我的解决方法。

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

在我的情况下:日期在B中,=month(B2)给出月份。因此,我需要添加一个额外的列=month(B2)

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

第二张

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

所以我做了以下。

  • 添加了额外的工作表
  • 用于=importrange("longkeynumber";"sheet form!A1:E1000")A1
  • (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

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

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

1

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

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


1

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


  • 将每月的每一天四舍五入到每月的第一天。

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

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

这样,随着岁月的流逝,您将获得独特的价值。我本人决定隐藏有问题的列,因为我有一个连接到此工作表的文档,该文档会在添加前两行时拉出前两行。

日期和格式公式

自定义日期格式

数据透视表结果

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.