【问题标题】:Fill Down Formula (Set a Fromula & Copy Down AutoFill) Google Sheets填写公式(设置公式并复制下来自动填充)谷歌表格
【发布时间】:2019-10-15 02:27:14
【问题描述】:

我有这个电子表格:

我正在创建一个脚本来在非空行上添加公式,我得到了这个结果:

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 行)

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    修改点:

    • 在您的脚本中,ssSpreadsheetApp.getActiveSpreadsheet().getActiveSheet() 声明。另一方面,该范围使用包含工作表名称的 a1Notation。我认为你的问题的原因是这个。
      • ss.getRange('Odds Completas!O2').setFormula('=C2+J2');,将公式放入工作表Odds Completas 的单元格“O2”中。
      • var lr = ss.getLastRow();,检索活动工作表的最后一行。
      • 在这种情况下,例如,如果活动工作表是新工作表,lr 将返回 0。由此,错误发生在ss.getRange('Odds Completas!O2').copyTo(fillDownRange);
        • 在您的脚本中,使用了lr-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);
    }
    

    参考资料:

    【讨论】:

    • 我已经在问题中编辑了一个细节,请也编辑答案,以免研究该主题的人感到困惑。这是我的错……实际上在fillDownRange 中,该列必须是15,而不是我所说的10。无论如何,您的回答很完美,完全解决了我的需求。非常感谢
    • @Frederico Mattos 感谢您的回复。我很高兴你的问题得到了解决。并感谢您提供更多信息。我更新了我的答案。
    猜你喜欢
    • 2021-09-06
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多