动态重组Google表格数据

时间:2017-10-24 14:41:10

标签: google-sheets

我目前正在使用Google表格从Wordpress中的Contact Form 7导入数据。所有的数据都很好,但我希望看到以更友好的方式格式化它。我已经简化了一些示例,但是我创建的表单的要点允许用户根据需要请求具有不同措辞的图形文件的多个版本,最多5个(为简单起见,我的示例只有2个)。

Imported Data

所有数据都是使用CF7变量导入的,理想情况下我想稍微清理一下。我想到的解决方案是创建第二张表格,将第一张表格中提交的数据转换为更加用户友好的格式,因为我打算将其用作设计师的工作表格,以便在设计者创建所需图形时使用收到数据。对于每个请求,名称/部门/电子邮件/日期都保持不变,但我想在另一行显示版本和第1行和第2行数据。是否可以动态重新组织这样的数据,因此当提交新表单并将数据添加到表1时,表2将使用格式正确的信息进行更新?

Reformatted Imported Data

这甚至可以吗?我做了一些网上搜索,但没有任何真正与此类数据操作相关的内容。

解决方案: 这是最终为我的例子工作的内容

=ArrayFormula(QUERY({
Sheet1!A2:D,Sheet1!E2:G,ROW(Sheet1!A2:A);
IFERROR(LEN(Sheet1!A2:D)/0),Sheet1!H2:J,ROW(Sheet1!A2:A);
IFERROR(LEN(Sheet1!A2:D)/0),Sheet1!K2:M,ROW(Sheet1!A2:A);
IFERROR(LEN(Sheet1!A2:D)/0),Sheet1!N2:P,ROW(Sheet1!A2:A);
IFERROR(LEN(Sheet1!A2:D)/0),Sheet1!Q2:S,ROW(Sheet1!A2:A)
},"select Col1,Col2,Col3,Col4,Col5,Col6,Col7 where Col5<>'' order by Col8",1))

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

一种方法是使用数组和QUERY函数。

为简单起见,我们说

  • 列A和B具有订单的一般信息
  • 列C和D具有版本1的数据
  • 列E和F具有版本2的数据
  • 列G和H具有版本3的数据

在输出表上,添加标题。 在它们下面添加如下公式:

=ArrayFormula(QUERY({A2:B,C2:D,ROW(A2:A);IFERROR(LEN(A2:B)/0),E2:F,ROW(A2:A);IFERROR(LEN(A2:B)/0),G2:H,ROW(A2:A)},"select Col1,Col2,Col3,Col4 where Col3<>'' order by Col5"))

  • 引用从第2行开始跳过标题以避免将它们包含在输出表中。
  • ROW(A2:A)用于保存订单
  • IFERROR(LEN(A2:B)/0)是一个&#34;技巧&#34;习惯了&#34;隐藏&#34;同一订单的第二行和后续行的订单(一般信息)数据。在QUERY函数的select参数上,它在order by子句中引用为Col5。
  • 假设lookup-choice-1永远不会为空。

注意:

  1. 如果添加了更多列,则应相应地更新列号
  2. 不要使用order by子句按一般信息列对结果进行排序,因为&#34;技巧&#34;隐藏&#34;标签&#34;。如果您需要进行排序,请执行此操作。在应用上述公式之前,您可以通过数据&gt;对源范围进行排序来完成此操作。排序范围...功能,因此数据在按上述公式转换之前进行排序。
  3. 另见