插入行时触发onEdit()



TL;DR:我有一个带有运行现金总额的电子表格,我想创建一个简单的脚本来运行它来清理余额列的公式,并在插入新行时触发该公式。

步骤:

  1. 在这个简化的示例表中,请注意(从单元格D3向下(D列将以前的余额与新的收入/成本相加,以计算新的余额
  2. 用户手动在第5行上方插入一行
  3. 用户为新条目输入-500美元的成本(在单元格C5中(

当前结果:

这个新行项目将而不是反映在运行总额中,EOW余额(单元格D11(显示为1253美元,而不是所需的753美元。因此,用户必须选择单元格D4,并通过D5和D6自动填充其公式,然后EOW余额将显示所需的$753。

autoFill部分可以单独使用以下脚本实现:

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().offset(-1, 0).activate();
var destinationRange = spreadsheet.getActiveRange().offset(0, 0, 3);
spreadsheet.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getCurrentCell().offset(0, 0, 3, 1).activate();

期望结果:

我在这里的请求是在插入行后立即自动触发上面的脚本片段(步骤1(。我猜脚本触发器将包含onEdit()INSERT_ROW,但希望能提供如何合并它的指针

SportyJorday,我建议您根本不需要脚本。试试这个:

1.(将您当前在D2单元格中的1000美元转移到C2。由于您没有使用实际的会计DEBIT/CREDIT(即两列(会计,因此将其放在那里是有意义的。

2.(删除D:D、页眉和所有内容。

3.(将以下数组公式放入现在为空的单元格D1:

=ArrayFormula({"Balance";IF(B2:B<>"",MMULT(TRANSPOSE((ROW(C2:C)<=TRANSPOSE(ROW(C2:C)))*C2:C),(C2:C)^0),"")})

4.(格式D:D作为货币,如果它还没有。

在这个设置中,您可以在上面添加行(或在下面添加空白行(,而不会出现任何问题,也不需要脚本。

最新更新