如何将 Google 表单的响应转换为所选响应的一系列行

问题描述 投票:0回答:1

我有一个 Google 表单,它链接到 Google 表格

该表单要求用户输入用户名,然后询问一些游戏的一系列复选框式问题。不要求每个用户对每个游戏都有一个答案,因此可能会出现没有选择任何问题的问题。

我的目标是拥有一张接受单个用户表单响应的工作表:

时间戳 用户名 埃尔登戒指 辐射4 天际
2024年4月26日16:17:33 第一个用户 击败游戏,会推荐 击败游戏

并将其格式化为更易于阅读的表格(

X
_
旨在指示复选框):

第一个用户(下拉菜单) 击败游戏 会推荐
埃尔登戒指 X X
辐射4 X _
天际 _ _

我打算在某个时候推出更多游戏,所以如果可以的话,我不想对行/列值进行硬编码。我已经设法将响应排列到正确的行中,但是我仍然需要将值拆分到正确的列中并将它们转换为复选框。我还想避免制作自定义脚本,除非您认为真的建议这样做。

我目前正在使用以下一组功能:

=TRANSPOSE(SPLIT(REGEXEXTRACT(JOIN("||", QUERY(INDIRECT("FormResponses!B2:"&ADDRESS(ROWS(FormResponses!B2:B), COLUMNS(FormResponses!B2:2), 4)), "SELECT * WHERE Col1 = '"&$A1&"'")), $A1&"\|\|(.*)"),"||"))

我不太熟悉表格,并且我被困在接下来的步骤中,或者如果我什至处于正确的轨道上(也许我忽略了一些其他功能,这会让这变得容易得多? )。任何帮助将不胜感激。

一些注意事项:

  • 正在使用
    INDIRECT
    ,因此我不必担心额外的行/列,因为我实际上想查看所有内容。
  • 然后我
    QUERY
    代表在
    A1
    的下拉列表中选择的用户名。
  • JOIN
    将值放入单行,并且
    REGEXEXTRACT
    除了用户名之外的所有内容
  • SPLIT
    TRANSPOSE
    结果与我从表单响应表中的列转置的行相匹配。

提前致谢。

google-sheets google-sheets-formula google-forms
1个回答
0
投票

您可以使用

INDEX-XMATCH-XMATCH
进行 2D 查找,以检索特定用户对特定游戏的响应,然后使用
REGEXMATCH
检查已选择哪些选项。

单元格

B2
中的此公式将自动填充范围
B2:C
中的所有复选框:

=ARRAYFORMULA(MAP(A2:A,LAMBDA(game,
   IFNA(REGEXMATCH(
      INDEX(FormResponses!A:ZZZ,XMATCH(A1,FormResponses!B:B),XMATCH(game,FormResponses!1:1)),
      B1:C1)))))
© www.soinside.com 2019 - 2024. All rights reserved.