【问题标题】:Duplicate Rows in Google Spreadsheet based on a single cell Value基于单个单元格值的 Google 电子表格中的重复行
【发布时间】:2020-02-17 00:20:57
【问题描述】:

我正在尝试以编程方式复制 Google 电子表格中的行。我希望该行的重复次数基于一个单元格值。

例如:

单元格 L10 包含值 45 第 23 行包含不同的值(值列表、公式、vlookup 等),我想在第一个公式上方重复这一行 44 次,因此从第 23 行到第 67 行有 45 行。

我用非常相似的问题尝试了请求中提到的代码,但无法适应我的需求。

enter image description here

【问题讨论】:

  • 更准确地说,我想知道脚本和一个按钮正在等待分配:) 非常感谢
  • 为什么要投票-1??
  • 嘿再次@MzoSchöwenier,请确保下次选择正确的标签;)
  • 好吧对不起!非常感谢,我会测试它!

标签: google-apps-script google-sheets google-sheets-api information-hiding


【解决方案1】:

我在我这边创建了一个示例表,如下所示:

然后我创建了以下脚本:

function insertXRows() {
  var sheets = SpreadsheetApp.getActiveSheet();
  var count = sheets.getRange(3,6).getValue(); //F3
  Logger.log(count);

  //Get my to be copied line
  var copyLine = sheets.getRange(9,2,1,7); //Fix these values depending on your row that you want to copy.
  while(count>0) {
    Logger.log(count);
    //Get last line of my data
    var lastRow = sheets.getDataRange().getValues().length;

    var newRow = sheets.getRange(lastRow+1, 2, 1, 7); //Fix these values depending on your row that you want to copy.
    for (var i = 0; i<copyLine.getValues()[0].length; i++) {
      if (copyLine.getFormulas()[0][i]!="") { //Check formulas first
        sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setFormula(copyLine.getFormulas()[0][i]);
      } else if (copyLine.getValues()[0][i]!="") {
        sheets.getRange(newRow.getRow(), newRow.getColumn()+i).setValue(copyLine.getValues()[0][i]);
      }
    }
    count--;
  }
}

希望这会有所帮助!

【讨论】:

  • 您好 Zektor ans 非常感谢您的支持。我已经尝试过了,但我发现首先这个过程需要时间。其次,我不能使用公式(一些单元格有选择列表,其中一些包含公式等)但最后。我认为我可以做相反的事情=如果我准备一个包含 100 个相似行的文档,也许我可以有一个脚本删除最后一行,直到我得到正确的数字。例如,该行从第 23 行复制到第 122 行,但我只需要 45 行,所以我希望脚本删除第 68 行 >122 行。也许这样更容易并且不需要那么长时间?你怎么看?谢谢
  • 你好。您可以像使用 getFormulas() 方法一样使用 getDataValidations() 方法。
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多