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