基于单个单元格值的 Google 电子表格中的重复行

Posted

技术标签:

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

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

例如:

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

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

enter image description here

【问题讨论】:

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

以上是关于基于单个单元格值的 Google 电子表格中的重复行的主要内容,如果未能解决你的问题,请参考以下文章

Google表格,根据包含公式的单元格值添加行

如果条件为真,如何循环 LibreOffice Calc 电子表格中的行范围、比较单元格值、设置单元格值和删除行

基于另一个单元格值的条件格式

以编程方式打印电子表格中的单元格和注释内容

根据 Python HTML 电子邮件中的单元格值将 HTML 表格单元格从“低到高颜色阴影”着色

基于单元格值的重复行