我有一个 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
结果与我从表单响应表中的列转置的行相匹配。提前致谢。
您可以使用
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)))))