【问题标题】:Google Sheet Array Formula to automatically transpose responses from a Google Form into a single cell谷歌表格数组公式自动将谷歌表单中的响应转换为单个单元格
【发布时间】:2020-09-16 01:24:09
【问题描述】:

我想调整一个数组公式,我试图用它来将一组来自 Google 表单的响应转换为链接的 Google 表格单元格中的单个“列表”。

这是 Google 表格的简化模型:https://docs.google.com/spreadsheets/d/1BKgjGK2RbXC5FkCgBOU53dLEb3fDeQADujenrqRgnT0/edit?usp=sharing

如您所见,我在 A 列的标题中“隐藏”了一个有效的数组公式,它从每行的 B:K 列中获取内容,并用换行符转置它们,以便在每行开头的第一个单元格(A2、A3、A4 等)为了便于参考,这里是数组公式:

=ARRAYFORMULA({"Points to Develop";
transpose(query(transpose ($B$2:$B&CHAR(10)&$C$2:$C&CHAR(10)&$D$2:$D&CHAR(10)&$E$2:$E&CHAR(10)&$F$2:$F&CHAR(10)&$G$2:$G&CHAR(10)&$H$2:$H&CHAR(10)&$I$2:$I&CHAR(10)&$J$2:$J&CHAR(10)&$K$2:$K)
))})

我遇到的问题是,一旦提交了新的 Google 表单,公式就会停止工作,因为新的响应行到达顶部并“将公式向下推”/使所有内容不对齐,当我想要的只是让它保持原位并在每次提交表单时自动运行。您可能可以通过我有限的技术术语来判断,我在这方面非常新手!

我该如何修正这个公式,或者是否有更简单或更好的替代方案可以达到相同的结果?

【问题讨论】:

  • 如果我对您的理解正确,您在电子表格中附加了一个表格,每次提交时都会将数据添加到您的工作表中,并且提交的数据会与您的公式混淆。在这种情况下,我会考虑(1)将 ARRAYFORMULA 放在与获取提交数据的表单不同的表单(选项卡)中,或者(2)完全摆脱公式并使用 Apps Script onFormSubmit 触发器代替,可用于在提交表单时执行一些操作,无需任何公式。无论如何,提交的数据如何与您的公式混淆?
  • 感谢您的建议。在解决了这个问题后,我突然意识到像您的选项 (2) 这样的解决方案可能是解决方案:我已经使用 Apps 脚本来获取 FormSubmit 上的“编辑”链接,这样我就可以轻松返回并稍后添加/编辑内容。但是,我不知道对于我在这里概述的情况需要什么样的脚本。您的选项 (1) 听起来很有希望 - 我会调查的。回覆。您的最后一个问题,提交的数据通过关闭/关闭所有单元格引用与我的公式混淆:$B$2:$B 变为 $B$3:$B 等,因此公式不会在新/顶行上运行.
  • 我不确定表单接收到什么数据以及在发生这种情况时应该如何管理它。如果你能再澄清一点,我愿意发布答案。
  • 谢谢,Iamblichus。 Google 表单是一种非常简单的问卷式表单,大多数问题(和答案)都是文本,可以是开放文本(简短答案/段落)或预设(下拉/复选框网格/等)。正如我在下面解释的那样,我找到了一个适合我的目的的解决方案(大概不管被转置的单元格的内容),所以我很乐意使用它并对其进行微调。感谢您提供有用的建议和问题。

标签: google-sheets transpose array-formulas google-forms


【解决方案1】:

正如生活中经常发生的那样,问题的本质原来是解决方案的根源。这是我的想法的浓缩版,因为我慢慢找到了答案(你几乎可以听到仓鼠轮子在我脑海里转动!):

  • 链接到 Google 表单的 Google 表格中的公式的问题是表单中的每个新条目/提交总是到达第 2 行……

  • 事实上,在 Google 表格中唯一保持“原位”的是标题行/第 1 行……

  • 因此,在提交新的 Google 表单时,我不应使用引用“第 2 行”的公式,该公式将变为“第 3/4/5 行/等”,而应该使用始终引用的公式到Row 1,即通过使用OFFSET

由此产生的明显(如果不优雅)公式是 [我还将其放在我在原始问题中链接到的 Google 表格的最后一列中]:

= ARRAYFORMULA({"Points to Develop [Working OFFSET Formula]"; transpose(query(transpose(OFFSET(A1:A,1,1)&CHAR(10)&OFFSET(A1:A,1,2)&CHAR(10)&OFFSET(A1:A,1,3)&CHAR(10)&OFFSET(A1:A,1,4)&CHAR(10)&OFFSET(A1:A,1,5)&CHAR(10)&OFFSET(A1:A,1,6)&CHAR(10)&OFFSET(A1:A,1,7)&CHAR(10)&OFFSET(A1:A,1,8)&CHAR(10)&OFFSET(A1:A,1,9)&CHAR(10)&OFFSET(A1:A,1,10)))) })

我确信有更简洁的方法可以获得相同的结果,但这是一种适合我的方法……并且在我的理解范围内,因此我可以根据需要对其进行微调和修复。

【讨论】:

    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多