Google 工作表中的累积差异或滚动差异 - 查询
Cumulatve Difference or rolling difference in Google Sheets - Query
我有以下 query formula
可以将不同 Facebook 页面的关注者数量从一个 sheet 转移到另一个:
=QUERY('Page Level'!A2:N, "SELECT C, MAX(J) where J<>0 and M<>'' GROUP BY C PIVOT M label C 'Date'")
结果是这样的,但有更多的国家:
Date Australia Austria Belgium
2018-01-01 7912 4365 1343
2018-01-02 7931 4364 1343
2018-01-03 7930 4366 1344
2018-01-04 7928 4365 1345
2018-01-05 7929 4362 1347
2018-01-06 7939 4363 1347
2018-01-07 7950 4361 1348
2018-01-08 7933 4339 1343
我想要的不是完整的关注者数量,而是日期之间的简单差异。所以,如果我们取上面的 table 结果将是这样的:
Date Australia Austria Belgium
2018-01-01 7912 4365 1343
2018-01-02 19 -1 0
2018-01-03 -1 2 1
每个新日期依此类推。任何人都知道如何在 google sheet 上执行此操作吗?
如果有帮助的话,我还有这些国家都在同一列中的数据。但是,数据不是按国家和日期排序的。而不是按日期和国家/地区,所以我想这个解决方案必须事先以某种方式对数据进行排序。
透视数据:
Date Country Followers
2018-01-01 Australia 7912
2018-01-01 Austria 4365
2018-01-01 Belgium 1343
2018-01-02 Australia 7931
2018-01-02 Austria 4364
2018-01-02 Belgium 1343
2018-01-03 Australia 7930
2018-01-03 Austria 4366
2018-01-03 Belgium 1344
2018-01-04 Australia 7928
2018-01-04 Austria 4365
2018-01-04 Belgium 1345
2018-01-05 Australia 7929
2018-01-05 Austria 4362
2018-01-05 Belgium 1347
2018-01-06 Australia 7939
2018-01-06 Austria 4363
2018-01-06 Belgium 1347
2018-01-07 Australia 7950
2018-01-07 Austria 4361
2018-01-07 Belgium 1348
2018-01-08 Australia 7933
2018-01-08 Austria 4339
2018-01-08 Belgium 1343
我已经相当接近它了,使用从旋转数据偏移中减去旋转数据 1 的基本思想:
=iferror(arrayformula({query(A:C,"SELECT A, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B limit 1 label A 'Date'");
query(A:C,"SELECT A, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B offset 1")-
query(A:C,"SELECT 0, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B")}),"")
它会在尝试减去 header 和后来的 non-existent 行时产生错误(如您所料)。我不知道如何避免这种情况,除非使用 IFERROR 产生如下所示的空行:
我有以下 query formula
可以将不同 Facebook 页面的关注者数量从一个 sheet 转移到另一个:
=QUERY('Page Level'!A2:N, "SELECT C, MAX(J) where J<>0 and M<>'' GROUP BY C PIVOT M label C 'Date'")
结果是这样的,但有更多的国家:
Date Australia Austria Belgium
2018-01-01 7912 4365 1343
2018-01-02 7931 4364 1343
2018-01-03 7930 4366 1344
2018-01-04 7928 4365 1345
2018-01-05 7929 4362 1347
2018-01-06 7939 4363 1347
2018-01-07 7950 4361 1348
2018-01-08 7933 4339 1343
我想要的不是完整的关注者数量,而是日期之间的简单差异。所以,如果我们取上面的 table 结果将是这样的:
Date Australia Austria Belgium
2018-01-01 7912 4365 1343
2018-01-02 19 -1 0
2018-01-03 -1 2 1
每个新日期依此类推。任何人都知道如何在 google sheet 上执行此操作吗?
如果有帮助的话,我还有这些国家都在同一列中的数据。但是,数据不是按国家和日期排序的。而不是按日期和国家/地区,所以我想这个解决方案必须事先以某种方式对数据进行排序。
透视数据:
Date Country Followers
2018-01-01 Australia 7912
2018-01-01 Austria 4365
2018-01-01 Belgium 1343
2018-01-02 Australia 7931
2018-01-02 Austria 4364
2018-01-02 Belgium 1343
2018-01-03 Australia 7930
2018-01-03 Austria 4366
2018-01-03 Belgium 1344
2018-01-04 Australia 7928
2018-01-04 Austria 4365
2018-01-04 Belgium 1345
2018-01-05 Australia 7929
2018-01-05 Austria 4362
2018-01-05 Belgium 1347
2018-01-06 Australia 7939
2018-01-06 Austria 4363
2018-01-06 Belgium 1347
2018-01-07 Australia 7950
2018-01-07 Austria 4361
2018-01-07 Belgium 1348
2018-01-08 Australia 7933
2018-01-08 Austria 4339
2018-01-08 Belgium 1343
我已经相当接近它了,使用从旋转数据偏移中减去旋转数据 1 的基本思想:
=iferror(arrayformula({query(A:C,"SELECT A, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B limit 1 label A 'Date'");
query(A:C,"SELECT A, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B offset 1")-
query(A:C,"SELECT 0, MAX(C) where C<>0 and B<>'' GROUP BY A PIVOT B")}),"")
它会在尝试减去 header 和后来的 non-existent 行时产生错误(如您所料)。我不知道如何避免这种情况,除非使用 IFERROR 产生如下所示的空行: