如何循环列以拖动公式?

时间:2016-10-24 20:37:22

标签: javascript google-apps-script google-sheets

我有第1行 - 最后一行定义的范围,我正在尝试执行以下操作:

  1. 查看每个列中的最后一行(它们应该都是相同的)并且 - 如果该单元格为空 - 从第1行向下拖动公式直到该列中的最后一行(例如,如果我' m在A栏上,我的最后一行是第10行,我将评估A10是否为空,如果是,我将从A1一直向下拖动公式到A10)
  2. 遍历A-M列并重复此过程
  3. 我正在努力解决这个问题,因为我一直在努力做好准备工作"调试时发出的消息,并且它没有运行。

    function dragformulas() {
    
        var sh2=SpreadsheetApp
            .getActiveSpreadsheet()
            .getSheetByName("Inputs for Web App")
        var lastrow = sh2.getLastRow();
    
      for (var j=0; j < 14 ; j+1) {
    
        var emptyrange= sh2.getRange(lastrow, j+1, 1, 1);
    
      if (emptyrange.isBlank()) {
    
        var copyformulacell = sh2.getRange(1, j+1, 1, 1);
        var dragrange= sh2.getRange(1, j+1, lastrow - 1, 1);
    
        var getformula = copyformulacell.getFormulas();
    
        dragrange.setFormula(getformula);
    
      }
     }
    }
    

1 个答案:

答案 0 :(得分:0)

我简化了代码,现在它的工作原理。对于未来的参考,这就是......

 function myFunction() {

  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Looping columns");
  var lastrow = sh.getLastRow();
  var numrows = lastrow;
  var lastcol = sh.getLastColumn();
  var numcols = lastcol;
  var range = sh.getRange(1,1,numrows,numcols);
  sh.setActiveRange(range);

  return propagateFormulae(numrows, numcols, sh);

}

function propagateFormulae(rows, cols){

  for(var i=1;i<=cols;i++){
    for(var j=2;j<=rows;j++){
      var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Looping columns");
      if(sh.getRange(j,i).getValue().length == 0)
        sh.getRange(j-1,i).copyTo(sh.getRange(j,i));
      else{
        j=rows;
     }
    }
   }
  }