在一个单元格中包含多个值的表单响应

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

很多表格都有多选题。许多表格应用程序(绝对是谷歌表格和JotForm)(当与工作表集成时)将它们全部放在一个单元格中,有时用一个 , , ; 或用一个新的行。

这样就很难分析数据,因为它被当作唯一的答案。

下面是一个表格和它的答案的例子。表格, 应对措施.

目标是按名称和日期分列每个条目。见回复中的 "希望的输出 "选项卡)。这应该是一个在表单中的解决方案,因为编辑表单并不总是一个选项(我在许多表单的数据中都遇到过这个问题)。

它必须是动态的(随着响应的到来),并且支持无限量的条目。同时最好不要使用自定义函数。

回复。Responses

希望的输出。

Desired Output

我把我的答案和它的缺点一起贴出来了。

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

你可以不改变表格中的问题吗? 像早些时候,它是(作为一个例子,我使用谷歌表格

旧版问题

但现在能不能改成。

新版的多选格问题

这样一来,当您的回答被收集到表单中时,每个水果都会有一个简单的 "是 "与 "否",可以很容易地进行分析,而无需要求用户回答更多的问题。

之后,您可以有一个动态的用户列表,谁更喜欢某一种水果,并使用日期显示 Filter() 函数。


0
投票

这是我想出来的,它并不是很好,因为它使用了一个自定义函数(我在使用它与另一个表使用导入范围输出的数据时有问题)。我也觉得它真的是很长的方式来做一些应该更简单的实现。

=ARRAYFORMULA(Split(QUERY(joinSplit(ARRAYFORMULA(SUBSTITUTE(FILTER({","&{'Form Responses 1'!C2:C}},{'Form Responses 1'!C2:C}<>""),",",Filter({"👨‍🌾"&{'Form Responses 1'!B2:B}&"👨🏾‍🌾"&{'Form Responses 1'!A2:A}&"👨🏾‍🌾"},{'Form Responses 1'!C2:C}<>""))), "👨‍🌾"),"Select Col1 where Col1 is not null"),"👨🏾‍🌾"))

这里是自定义函数 "joinSplit "的代码(我从某个地方得到的,但我不记得在哪里)。

`function joinSplit(column, delim)
{
  var result = [];
  var row = [];
  for (var i = 0, l = column.length; i < l; i++)
  {
    row = column[i].join(delim).split(delim);
    row.forEach( function(elt) { result.push([elt]); } ); 
  }  
  return result;
}`

如果有人需要的话 此处 是一个现成的版本,复制一份并修改相应的字段。


0
投票

这里是 是我在web apps SE上找到的一个解决方案,解决了一个非常类似的问题。

不过它使用了一个自定义函数。

function result(range) {
  delimiter = ", "
  targetColumn = 2

  var output2 = [];
  for(var i=0, iLen=range.length; i<iLen; i++) {
    var s = range[i][targetColumn].split(delimiter);    
    for(var j=0, jLen=s.length; j<jLen; j++) {
      var output1 = []; 
      for(var k=0, kLen=range[0].length; k<kLen; k++) {
        if(k == targetColumn) {
          output1.push(s[j]);
        } else {
          output1.push(range[i][k]);
        }
      }
      output2.push(output1);
    }    
  }
  return output2;
}
© www.soinside.com 2019 - 2024. All rights reserved.