Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在不使用透视表的情况下将表压缩为三列_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 在不使用透视表的情况下将表压缩为三列

Google apps script 在不使用透视表的情况下将表压缩为三列,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一张表,我想把它浓缩成一张图表。我担心使用透视表,因为我最终想要导出数据。看起来像这样: 这是主文档的一个选项卡,共有26个选项卡(全年) 我希望结果如下所示: 我尝试了一些基本数组,但无法获取所有数据(即只有两个变量,而不是三个)。我也尝试过查询功能,但我对它还不够熟悉,无法使其正常工作。在没有数据透视表的情况下展平二维数组是一种痛苦。在您的情况下,列的数量似乎不会经常改变,因此使用一个将它们硬编码的公式是合理的: =sort({ filter({A4:A, iferror(A4:A/

我有一张表,我想把它浓缩成一张图表。我担心使用透视表,因为我最终想要导出数据。看起来像这样:

这是主文档的一个选项卡,共有26个选项卡(全年)

我希望结果如下所示:


我尝试了一些基本数组,但无法获取所有数据(即只有两个变量,而不是三个)。我也尝试过查询功能,但我对它还不够熟悉,无法使其正常工作。

在没有数据透视表的情况下展平二维数组是一种痛苦。在您的情况下,列的数量似乎不会经常改变,因此使用一个将它们硬编码的公式是合理的:

=sort({
filter({A4:A, iferror(A4:A/0, C3), C4:C}, len(C4:C)); 
filter({A4:A, iferror(A4:A/0, D3), D4:D}, len(D4:D)); 
filter({A4:A, iferror(A4:A/0, E3), E4:E}, len(E4:E));
filter({A4:A, iferror(A4:A/0, F3), F4:F}, len(F4:F));
filter({A4:A, iferror(A4:A/0, G3), G4:G}, len(G4:G));
filter({A4:A, iferror(A4:A/0, H3), H4:H}, len(H4:H));
filter({A4:A, iferror(A4:A/0, I3), I4:I}, len(I4:I))
}, 1, true)
这有助于记住公式可以有换行符(Ctrl-Enter)并且公式窗口是可展开的

解释
  • {A4:A,iferror(A4:A/0,C3),C4:C}
    形成一个三列数组,其中第一列是日期,第三列是时间,第二列是重复的人名(被零除是实现重复的一个技巧)
  • len(C4:C)
    是过滤条件:只取输入了时间的行
  • filter
    的结果垂直堆叠(分号),然后按日期(第1列)按升序排序(true)