Google Spreadsheet 按问题批量自动合并受访者答案需求
批量合并Google Sheets问卷问题的受访者答案
针对你有100个问卷问题、每个问题选项列数不一的情况,下面两种方法可以自动完成按问题合并答案的需求,无需手动逐个设置公式:
方法1:辅助列+QUERY分组(推荐,逻辑清晰)
步骤1:标记每列对应的问题
在你的问卷数据Sheet(比如Sheet1)里找一个空白列(比如Z列,确保该列没有其他数据),在Z1单元格输入公式:
=ARRAYFORMULA(LOOKUP(COLUMN(A:Y), COLUMN(A:Y)/(Sheet1!1:1<>""), Sheet1!1:1))
把公式里的A:Y替换成你实际的问卷数据列范围(比如数据到CZ列就改成A:CZ)。这个公式会自动给每一列打上所属问题的标签,不管每个问题占多少列。
步骤2:自动分组合并答案
新建一个Sheet(比如Sheet2),在A1单元格输入:
=QUERY({FLATTEN(Sheet1!Z3:Z), FLATTEN(Sheet1!A3:Y)}, "select Col1, TEXTJOIN(', ', TRUE, Col2) where Col2 is not null group by Col1 label Col1 '问题', TEXTJOIN(', ', TRUE, Col2) '合并答案'", 1)
同样替换Z3:Z(辅助列的行范围)和A3:Y(问卷回答的列范围)为你实际的范围。运行后会直接输出每行一个问题,对应的所有受访者答案用逗号分隔合并。
方法2:无辅助列直接生成
如果不想用辅助列,分两步操作:
- 提取所有问题:在
Sheet2的A1单元格输入公式,自动拉出100个问题:=ARRAYFORMULA(TRIM(FILTER(Sheet1!1:1, Sheet1!1:1<>""))) - 批量合并答案:在
Sheet2的B1单元格输入数组公式,自动为每个问题生成合并后的答案:
把=ARRAYFORMULA(IF(A:A="", "", TEXTJOIN(', ', TRUE, FILTER(FLATTEN(Sheet1!3:1000), XMATCH(COLUMN(Sheet1!3:1000), ARRAYFORMULA(IF(Sheet1!1:1=A:A, COLUMN(Sheet1!1:1), "")), 0)))))Sheet1!3:1000改成你实际的受访者回答行范围(比如有500个受访者就改成3:502)。
额外适配:如果是勾选式答案(TRUE/FALSE)
如果你的问卷是勾选选项(单元格显示TRUE/FALSE),想要合并选项文本而不是布尔值,可以修改QUERY公式为:
=QUERY({FLATTEN(Sheet1!Z3:Z), FLATTEN(IF(Sheet1!A3:Y=TRUE, Sheet1!A2:Y2, ""))}, "select Col1, TEXTJOIN(', ', TRUE, Col2) where Col2 is not null group by Col1 label Col1 '问题', TEXTJOIN(', ', TRUE, Col2) '合并答案'", 1)
这个公式会自动把勾选的选项文本提取出来合并。
内容的提问来源于stack exchange,提问作者IanG
相关产品推荐
相关产品推荐

