填写公式(设置公式和向下复制自动填充)Google表格

布隆德比

我有这个电子表格:

在此处输入图片说明

我正在创建一个脚本,以在不为空的行上添加公式,我得到了以下结果:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  ss.getRange('Odds Completas!O2').setFormula('=C2+J2');

  var lr = ss.getLastRow();
  var fillDownRange = ss.getRange(2, 15, lr-1);
  ss.getRange('Odds Completas!O2').copyTo(fillDownRange);
}

该公式在中定义O2,但以下其他未定义而是,出现以下消息:

范围中的行数必须至少为1。(第6行)

Tanaike

这个答案怎么样?请认为这只是几个答案之一。

修改要点:

  • 在脚本中,ss由声明SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()另一方面,该范围使用包含工作表名称的a1Notation。我认为您的问题的原因是这样的。
    • 在处ss.getRange('Odds Completas!O2').setFormula('=C2+J2');,公式被放入工作表的单元格“ O2” Odds Completas
    • 在处var lr = ss.getLastRow();,检索活动工作表的最后一行。
    • 在这种情况下,例如,如果活动工作表是新工作表,则lr返回0这样,错误发生在ss.getRange('Odds Completas!O2').copyTo(fillDownRange);
      • 在您的脚本中,lr-1被使用。因此,即使最后一行为1,也会发生错误。请注意这一点。

修改后的脚本:

模式1:

在这种模式下,您的脚本不会被修改。在运行脚本之前,请打开工作表Odds Completas并运行脚本。这样,脚本将作为的活动工作表运行Odds Completas,并lr返回的最后一行Odds Completas

模式2:

在这种模式下,您的脚本将被修改。

function myFunction() {
  var sheetName = "Odds Completas";
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  sheet.getRange('O2').setFormula('=Q2+J2');

  var lr = sheet.getLastRow();
  var fillDownRange = sheet.getRange(2, 15, lr-1);
  sheet.getRange('O2').copyTo(fillDownRange);
}

参考文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章