更快的迭代计算

时间:2016-02-12 04:54:11

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

我制作了一个脚本,执行迭代计算,根据项目成本的总百分比查找值。

这是我到目前为止所做的:

//<!-- FEE, BOND, & INSURANCE CALCULATOR --!>
function feeBondInsCalculator (){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Pretty Sum Form");
  sheet.activate();
  // Get all variables from named ranges
  var bondValue = ss.getRangeByName("bondValue");
  var bondCalc = ss.getRangeByName("bondCalc");
  var insValue = ss.getRangeByName("insValue");
  var insCalc = ss.getRangeByName("insCalc");
  var feeValue = ss.getRangeByName("feeValue");
  var feeCalc = ss.getRangeByName("feeCalc");
  var interCount = ss.getRangeByName("interCount")

  // Interative calculation to paste calculated values into the body of the spreadsheet
    for (var i = 0; i<11; i++){
      feeCalc.copyTo(ss.getRangeByName("feeValue"), {contentsOnly: true});
      bondCalc.copyTo(ss.getRangeByName("bondValue"), {contentsOnly: true});
      insCalc.copyTo(ss.getRangeByName("insValue"), {contentsOnly: true});
      interCount.setValue(i)
    } 
  }

我使用范围名称,以便用户可以添加/删除行和列,而不必重置代码。执行时,代码工作正常,但每次迭代大约需要两秒钟。有没有更有效的方法来完成这项工作?

1 个答案:

答案 0 :(得分:0)

您可以尝试直接在公式中引用范围,而不是使用副本:

=arrayformula(if(bondValue <>"",bondValue,""))