数千行と 2 列のシートがあります。行をインクリメントし、列の 1 つの値を同じ列の前の 50 個の値と比較して、前の 50 個のエントリの最大値より大きいかどうかを確認するスクリプトを作成する必要があります。
Math.max() を使用しようとしましたが、ダイナミック レンジで動作させるために使用する正しい構文が見つかりません。
数千行と 2 列のシートがあります。行をインクリメントし、列の 1 つの値を同じ列の前の 50 個の値と比較して、前の 50 個のエントリの最大値より大きいかどうかを確認するスクリプトを作成する必要があります。
Math.max() を使用しようとしましたが、ダイナミック レンジで動作させるために使用する正しい構文が見つかりません。
あなたの出発点。書いた後、何に対してもコードを実行しなかったので、微調整が必要かもしれません。
var myss = assign spreadsheet by ID or name, etc
var mySheet = myss.getActiveSheet();
var col = 2; //or whatever column you are working in
var startRow = 1; //or whatever row you are going to start this on
var largeRow = startRow; //Start with the first row as the "largest"
for ( var i = startRow; i <= mySheet.getLastRow(); i++){ //may need to change the "getLastRow()" check if columns aren't equal length
var startCheck = i - 50;
if (startCheck < startRow){ //The first 49 rows won't be able to check back 50 rows, you'll need to truncate to the starting row.
startCheck = startRow;
}
largeRow = startCheck;
for (j = startCheck; j < i; j++){ //cycle through the last 50 cells.
if (mySheet.getRange(largeRow,col).getValue() < mySheet.getRange(j,col).getValue){ //start with the first of the 50 as the largest, update if a later one is larger
largeRow = j;
}
}
if (mySheet.getRange(i,col).getValue > mySheet.getRange(largeRow,col).getValue){ // Is the current value larger than the largest of the last 50.
//Whatever you need to do if it is larger - your question didn't say.
}
}