首页 > 解决方案 > Google Apps Script Q - 在表格中是否可以设置公式(SUM),其中单元格的总和根据行而变化?

问题描述

我正在尝试编写一个函数,它将 setFormula 对 2 个单元格的值求和。该公式需要根据正在处理的行进行更改。

例如:

我有一个函数可以在第一个可用行中设置公式,但不知道是否可以修改它以如上所述工作。

function onEdit(e) {
  var row = e.range.rowStart;
  var col = e.range.columnStart;
  
  if (row > 7 && col == 4) {
    insertCurrentTime(e.range.offset(0, 1)); // This sets the value in Column E
    insertDurationFormula(e.range.offset(0, 2)); //This sets the formula in Column F
  }
}

function insertCurrentTime(cell) {
  cell.setValue(new Date());
}

function insertDurationFormula(cell) {
  cell.setFormula("=SUM(E8-D8)");
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


解释:

您需要使用模板文字将单元格行号合并到setFormula函数的字符串参数中。

let crow = cell.getRow();
cell.setFormula(`=SUM(E${crow}-D${crow})`);

insertDurationFormula按照我的解决方案中的建议进行修改。


解决方案:

 function onEdit(e) {
  var row = e.range.rowStart;
  var col = e.range.columnStart;
  
  if (row > 7 && col == 4) {
    insertCurrentTime(e.range.offset(0, 1)); // This sets the value in Column E
    insertDurationFormula(e.range.offset(0, 2)); //This sets the formula in Column F
  }
}

function insertCurrentTime(cell) {
  cell.setValue(new Date());
}

function insertDurationFormula(cell) {
  let crow = cell.getRow(); // new code
  cell.setFormula(`=SUM(E${crow}-D${crow})`); // modified
}

推荐阅读