首页 > 解决方案 > 如何使用 Google Apps 脚本对长度不同的列求和?

问题描述

我正在尝试使用 Google Apps scipt 在该列的最底部添加一个列的总和公式。行数会有所不同,但起始单元格将保持不变。

我想使用公式而不是插入静态总和,以便用户无需运行任何脚本即可查看最新总和。

constantslr+savingslr+needslr+wantslr= the number of rows to be summed。它们是前面定义的。


我试过这个没有运气。

var sss = SpreadsheetApp.getActiveSpreadsheet();
var ss = sss.getSheetByName('Set Up Data');
ss.getRange(6+constantslr+savingslr+needslr+wantslr,4,1,1).setFormulaR1C1('
=SUM(-['constantslr+savingslr+needslr+wantslr']C[0]:R[-1]C[0])');

标签: google-apps-scriptformuladynamic-data

解决方案


这不是一个应用程序脚本公式,但如果您将要汇总的区域设置为名称范围,并使用:

 =SUM(YourRangeName) 

它将总结整个范围。

只要在第一行和最后一行之间插入行,命名范围就会包含所有行。

示例:第 2 - 17 行是命名范围 SumThing

在此处输入图像描述

在中间插入 5 行: 当您插入行时,命名范围会扩展。您可以在数据底部和包含求和公式的行之间留下一个空白行,然后在空白行上方插入行以实现相同的目的。

在此处输入图像描述

在 App 脚本中也很有用

我一直在我的应用程序脚本中使用命名范围,这样我就不必担心有人在工作表中添加行或列并破坏脚本范围。在应用程序脚本中执行此操作:

function useNamedRange(){
  var ss = SpreadsheetApp.getActive();
  
  // Named ranges belong to the spreadsheet, not an individual sheet
  var range = ss.getRangeByName("SumThing");

  // do something with the named range
}

推荐阅读