【问题标题】:AutoFill Formula (running across spreadsheet) - Google Sheets / Apps Script自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本
【发布时间】:2021-05-13 05:44:53
【问题描述】:

我想更改下面的代码以在整个页面中自动填充公式 - 而不是向下自动填充

您可以在下面的 2 张图片中看到,我可以将公式添加到 N527,但无法使用代码自动填充整个页面 - 这正是我正在寻找的。​​p>

所以图像是我想要完成的之前和之后

function LastColumn(){
var spreadsheet = SpreadsheetApp.getActive();
var LastColumn = spreadsheet.getLastColumn();
//spreadsheet.setActiveSheet(spreadsheet.getSheetByName('MASTER'), true);
spreadsheet.getRange('N527').activate();
spreadsheet.getCurrentCell().setFormula('=sum(N497*N498*N499)/100/250');
var destinationRange = spreadsheet.getActiveRange().offset(0, 0, LastColumn -526);
spreadsheet.getRange("N527:BK527").copyTo(destinationRange);  
}

我无法让附加的代码工作

我正在尝试将 N527 自动填充到 AK527 - 如果上面的单元格有数据。

提前致谢

【问题讨论】:

  • 我无法理解IF THE CELL ABOVE HAS DATA.。我为我糟糕的英语水平道歉。我可以问你目标的细节吗?
  • 嗨 Tanaike - 如果上面的单元格(第 526 行)包含单词“carton”,则填写公式。所以第 527 行的 O 列应该有公式 spreadsheet.getCurrentCell().setFormula('=sum(O497*O498*)499)/100/250');等等等等
  • 感谢您的回复。从你的回复中,我提出了一个答案。你能确认一下吗?如果这不是您期望的结果,我深表歉意。

标签: google-apps-script google-sheets


【解决方案1】:

我相信你的目标如下。

  • 你想把=sum(N497*N498*N499)/100/250的公式从单元格“N527”放到列方向。
  • 在这种情况下,当同一列的第526行的值为carton时,您要输入公式。
  • 您希望使用 Google Apps 脚本实现此目的。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

function LastColumn() {
  var sheetName = "Sheet1"; // Please set the sheet name.
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  var range = sheet.getRange('N526:526');
  var ranges = range.getValues()[0].reduce((ar, r, i) => {
    if (r.toLowerCase() == "carton") ar.push(range.offset(1, i, 1, 1).getA1Notation());
    return ar;
  }, []);
  sheet.getRangeList(ranges).setFormulaR1C1('=sum(R[-30]C[0]*R[-29]C[0]*R[-28]C[0])/100/250');  // This formula is like `=sum(N497*N498*N499)/100/250`.
}
  • 在这种情况下,首先检查单元格“N526:526”是否具有carton 的值。并且,当单元格具有值时,将公式放入第 527 行。
    • 我为此使用了 RangeList。

参考资料:

【讨论】:

    【解决方案2】:

    您需要将已包含公式的单元格中的公式复制到要扩展的范围内

    这意味着您的目标范围应该是“O527:BK527”。

    示例:

    function autoFill(){
      var spreadsheet = SpreadsheetApp.getActive();
      var sheet = spreadsheet.getSheetByName('MASTER');
      var firstCell = sheet.getRange('N527');
      firstCell.setFormula('=sum(N497*N498*N499)/100/250');
      var destinationRange = sheet.getRange("O527:BK527");
      firstCell.copyTo(destinationRange);  
    }
    

    【讨论】:

    • 谢谢ziganotschka - 如果上面的单元格包含数据,我只想填充该行 - 在这种情况下,“carton”可以找到最后一列数据。
    猜你喜欢
    • 1970-01-01
    • 2020-05-02
    • 2023-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多