如何使用 for 对谷歌应用程序脚本中的范围求和?

use*_*814 4 google-sheets google-apps-script custom-function

我想使用谷歌应用程序脚本在谷歌电子表格中创建一个简单的自定义总和公式。

\n\n
 function somaDias(range, days) {\n   var sum = 0;\n\n   for(i=0; i<days; i++){\n     sum = sum + range[i];\n  }\n\n\n    return soma;\n    }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我将在报告中使用此函数,该报告有一列包含每月每一天的货币值。这个想法是选择整列值,将其作为范围传递,然后将这些值求和到该月的某一天。我知道有问题

\n\n
  sum = sum + range[i];\n
Run Code Online (Sandbox Code Playgroud)\n\n

因为,当我用只有 1 的列测试它时...返回是“0111111”

\n\n

=somaDias(C9:C15;6) // 应该返回 6,但它返回 0111111

\n\n

我不想使用 =sum(),因为范围根据日期而变化。我想传递该月 30 天的范围,然后传递我想要求和的天数。如果我使用 sum,我就必须每天重新选择范围......

\n\n

我\xc2\xb4m 做错了什么?

\n

Ser*_*sas 5

为什么不使用电子表格内置功能SUM()?(文档在这里

在此输入图像描述


编辑以下评论。

我不喜欢自定义函数,但这里有一种方法可以实现您想要的:仅使用 1 个参数 = 天数,它将从第一列开始计数。

function somaDias(days) {
  var sum = 0;
  var sh = SpreadsheetApp.getActiveSheet();
  var values = sh.getRange(sh.getActiveCell().getRowIndex(),1,1,days).getValues();

  for(var i in values[0]){
    sum += values[0][i];
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)