我有一个足球电子表格,其中有一个概述表(它是第一张表)和另外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;
}
答案 0 :(得分:0)
如果不查看您的电子表格我无法确定,但只是从查看您的代码,我猜您已将“开始”和“结束”单元格混淆了。现在的方式,两个单元格都在同一行,但是在开始之前结束,这不是你在上面描述的那样。