Google电子表格:在一定数量的工作表中汇总值

时间:2015-07-29 15:24:36

标签: google-apps-script google-sheets

我有一个足球电子表格,其中有一个概述表(它是第一张表)和另外34张表(对于每个比赛日,称为" x .ST"),其中包含值。在概述表中,我想从一组匹配日中获得特定值的总和。我试图通过App脚本实现这一点。 var start 是定义第一个匹配日的值, var end 是最后一个匹配日。我希望它尽可能动态,所以我可以获得值,即从第10天到第20天或20到25等等。

开始 end 的每张工作表在给定的单元格中都有一个值。这个值可以是" 3" (获胜)," 1" (用于抽奖)或" 0" (对于损失)。因为这个功能应该显示胜利的比赛日数,每个" 3"计为1,每个" 1"和" 0"逻辑上,所有1的总和是赢得比赛日的数量。这是代码:

function win(cell) { 
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheets = ss.getSheets();
   var sum = 0;
   var end = ss.getActiveSheet().getRange(21, 2).getValue() + 1;
   var start = ss.getActiveSheet().getRange(21, 3).getValue() + 1;


     for (var i = start; i < end ; i++ ) {
        var sheet = sheets[i];
        var val = sheet.getRange(cell).getValue();

        if (val == "3") {
            val = 1;
        } else {
            val = 0;
        }
        sum += val;
    }

    return sum;
}

现在,我的问题是代码确实有效,但总和总是0(零),无论使用&#34; 3&#34;在给定的单元格中。我真的不知道问题出在哪里。有想法的人吗?

编辑:这是电子表格。我不确定它会有所帮助,但无论如何: https://docs.google.com/spreadsheets/d/1SoE4cJVAeeurmB7bvvGENEWvu2Mg1xvA3B3hTobBxW8/edit#gid=0

EDIT2:好的,有简单的错误,代码现在正常工作。首先,我必须在 getRange()中更改 cell ,然后我必须保证每个值都是整数。 start end 也出错,导致代码搜索错误。因为这些工作表当前没有任何值,所以总是有0.这就是当前代码:

function win(cell) {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var sheets = ss.getSheets();
   var sum = 0;
   var end = ss.getActiveSheet().getRange(21, 2).getValue() + 1;
   var start = ss.getActiveSheet().getRange(21, 3).getValue();

     for (var i = start; i < end ; i++ ) {
        var sheet = sheets[i];
        var val = sheet.getRange([cell]).getValue();

        parseInt(val) * 1;

        if (val == 3) {
            val = 1;
        } else {
            val = 0;
        }
        sum += val;
    }

    return sum;
}

1 个答案:

答案 0 :(得分:0)

如果不查看您的电子表格我无法确定,但只是从查看您的代码,我猜您已将“开始”和“结束”单元格混淆了。现在的方式,两个单元格都在同一行,但是在开始之前结束,这不是你在上面描述的那样。