TL;DR:我有一个带有运行现金总额的电子表格,我想创建一个简单的脚本来运行它来清理余额列的公式,并在插入新行时触发该公式。
步骤:
- 在这个简化的示例表中,请注意(从单元格D3向下(D列将以前的余额与新的收入/成本相加,以计算新的余额
- 用户手动在第5行上方插入一行
- 用户为新条目输入-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作为货币,如果它还没有。
在这个设置中,您可以在上面添加行(或在下面添加空白行(,而不会出现任何问题,也不需要脚本。