基于Value的Google电子表格中的重复行

时间:2014-08-20 04:39:44

标签: google-apps-script google-sheets google-spreadsheet-api

我试图以编程方式复制Google电子表格中的行。我想将行复制的次数基于行本身中的一个值。

例如,假设我有一个这样的表:

enter image description here

您可以看到C列中有数字.C列中的值是我想复制该行的次数。这就是期望的结果:

enter image description here

从技术上讲,如果C列中的值为3,我们会将该行重复两次。

有关如何编写Google电子表格脚本以执行此操作的任何想法都会很棒!

谢谢!

2 个答案:

答案 0 :(得分:6)

这很简单,您应该自己尝试一下。我敢肯定,当你阅读下面的代码时,你会说“哦,当然,我可以轻松地完成它”......对吗?

function autoDup() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = [];
  for(var n in data){
    newData.push(data[n]);
    if(!Number(data[n][2])){continue};// if column 3 is not a number then do nothing
    for(var c=1 ; c < Number(data[n][2]) ; c++){ // start from 1 instead of 0 because we have already 1 copy
      newData.push(data[n]);//store values
    }
  }
  sheet.getRange(1,1,newData.length,newData[0].length).setValues(newData);// write new data to sheet, overwriting old data
}

答案 1 :(得分:0)

假设您输入的内容位于inSheet上,则可以在另一张纸上放置以下公式=transpose(split(arrayformula(textjoin(",",false,iferror(rept(inSheet!A1:A&",",inSheet!$C1:$C)))),","))并将其向右拖动两次,即可完成操作。 可以将其防弹,以处理空单元格或逗号或重复值为0的单元格,但对于像上面这样的漂亮数据,它照常工作。