我认为这很简单,但是我是新手,所以我不确定从这里去哪里:)
我有一个Google表格,其中包含一些数据(相当大的表格)。我想要一个脚本来检查一个单元格(第I列)中的数字是否大于同一行但另一列(第D列)中的数字。
想象一下两行有5行的列:D列=(3、3、3、3、3、3)和I列=(2、2、7、2、2)
在此示例中,我希望脚本告诉我“行3”有问题,因为第I列第3行的数字大于第D列第3行的:)>
这就是我所拥有的:
function Check() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var lr = sheet.getLastRow();
var Summary;
for (var i=6; i<lr; i++) {
if (sheet.getRange(i,9) > sheet.getRange(i,4)){
summary.setvalue("Problem")
}
}
}
我希望它从第6行开始,因为我的数据从这里开始。我只检查I列(因此为9)和D列(因此为4)
我不确定该如何处理我的for循环和If语句?现在,代码正在检查第4列(D)和第I列(9)中的每一行,但是,只要第9列中的数字大于第4列中的数字,我如何存储该值?我还想要一个输出,在代码完成后,所有有问题的行都输出?如果我们没有任何问题,我想显示一条消息:“没问题”
有人可以从这里引导我吗?
答案 0 :(得分:2)
如果您的输出可以在工作表中设置(请在“ J”列中说),则可以使用此方法:
function Check() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var maxRows = sheet.getMaxRows(); // get the number of rows
var startRow = 6;
var diffCol1 = 'D';
var diffCol2 = 'I';
var outputCol = 'J';
var outputStrOK = 'no problem';
var outputStrKO = 'problem';
var outputRange = []; // stored values
for (var i = startRow; i <= maxRows; i++) {
var valueA = sheet.getRange(diffCol2+i).getValue();
var valueB = sheet.getRange(diffCol1+i).getValue();
// add controls on values then
if (valueA > valueB) {
outputRange.push([outputStrKO]);
} else {
outputRange.push([outputStrOK]);
}
}
// setting a range of values is much faster than fulfilling cell by cell in loop
sheet.getRange(outputCol+startRow+':'+outputCol+maxRows).setValues(outputRange);
}
因此,您应该这样做:
#|D|I|J
6|9|4|problem
7|4|9|no problem