谷歌表格复选框结果作为新行

3

我们在一个谷歌表单上有复选框,这个表单会反馈到一个谷歌表格中。复选框的响应是逗号分隔的,我们想知道是否可能将其作为新行。

这是表单如何填充到表格中:

[Col A] [Col B]
Name   Availability  
Larry  Monday  
Sergey Monday, Wednesday  
Sonali Thursday, Friday  

这是我们想要的方式:
[Col A] [Col B] 
Name   Availability  
Larry  Monday  
Sergey Monday  
Sergey Wednesday  
Sonali Thursday  
Sonali Friday  

任何想法都将不胜感激,谢谢!
2个回答

2

不久之前,我在Google应用脚本中编写了一个自定义函数来处理相同的情况。以下是该脚本。

/** 
* Splits the array by commas in the column with given index, by given delimiter
* @param {A2:B20}  range Range reference
* @param {2}  colToSplit Column index
* @param {","}  delimiter Character by which to split
* @customfunction
*/


function advancedSplit(range, colToSplit, delimiter) {
var resArr = [], row;
range.forEach(function (r) {
    r[colToSplit-1].replace(/(?:\r\n|\r|\n)(\d|\w)/g,", ").split(delimiter)
        .forEach(function (s) {
            row = [];
            r.forEach(function (c, k) {               
                row.push( (k === colToSplit-1) ? s.trim() : c);
            })
            resArr.push(row);
        })
    })
return resArr;
}

您可以将脚本与内置公式一样使用,只需在电子表格中输入(例如,假设要拆分的列为D列)。

=advancedSplit(A1:Z, 4, ",")

我希望这能有所帮助。


很高兴听到这个好消息,@Kayem。 - JPV
天才!谢谢,@JPV - Paul Murray

0
你可以尝试使用公式来完成这个任务。
假设有两列数据:
A      |       B
Name   | Availability

在这个例子中,数据从第二行开始。我们需要两个公式。第一个公式是生成“姓名”列表的:
=TRANSPOSE(SPLIT(JOIN("",ARRAYFORMULA(REPT(offset(A2,,,$G$1)&",",len(offset(B2,,,$G$1))-len(SUBSTITUTE(offset(B2,,,$G$1)," ",""))+1))),","))

第二个公式生成一个复选框结果列表:

=TRANSPOSE(SPLIT(join(", ",FILTER(B2:B;B2:B<>"")),", "))

说明:

  • A2 -- 带有名称的第一个单元格
  • B2 -- 带有复选框结果的第一个单元格
  • $G$1 -- 总行数。它可以是公式:

    =COUNTA(A2:A)

这个解决方案很复杂,但它可行。这是示例工作簿


你的第一个公式是有效的,但我想看到它的解释。我正在尝试逐步理解它,但并不是所有的都能理解。 - IMTheNachoMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接