3

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

 function somaDias(range, days) {
   var sum = 0;

   for(i=0; i<days; i++){
     sum = sum + range[i];
  }


    return soma;
    }

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

  sum = sum + range[i];

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

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

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

我做错了什么?

4

2 回答 2

3

为什么不使用内置功能的电子表格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;
}
于 2014-07-28T16:00:59.620 回答
1

如果你遍历这些值,你可以使用下面的函数。您可以指定对象以及需要求和的列索引。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("A1:F30");
var values = range.getValues();


function sum( obj, colindex ) {
  var sum = 0;
  for( var el in obj ) {
      sum += parseFloat( obj[el][colindex] );
  }
  return sum;
}
于 2018-02-21T17:00:28.243 回答