2013-08-14 2 views
2

У меня есть лист с несколькими тысячами строк и 2 столбца. Мне нужно написать скрипт, который будет увеличивать строку, и сравнить значение в одном из столбцов с предыдущими 50 значениями в том же столбце и посмотреть, превышает ли это максимальное значение из 50 предыдущих записей.Нужна помощь в поиске максимального значения в столбце в Google Таблицах с помощью Google Apps Script

Я пытался использовать Math.max(), но не могу найти правильный синтаксис, чтобы использовать это для работы в динамическом диапазоне.

ответ

1

Вы можете использовать метод setFormula(formula) и использовать формулу, например =MAX(Range).

Может быть полезным способ getDataRange(). После получения диапазона данных вы можете определить максимальное количество строк getLastRow() и столбцов getLastColumn().

0

начальная точка для вас. Я не запускал свой код во что бы то ни стало после написания, поэтому может потребоваться некоторая настройка.

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. 
    } 
} 
4

при чтении/записи в таблицах всегда старается сделать это сразу, избегая зацикливание над клетками

Я уверен, что есть лучший Javascript подход, но этот код поможет вам максимальное значение в пределах колонка

function getMaxInColumn(column) { 
    var column = 2; // just for testing 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var colArray = sheet.getRange(2, column, sheet.getLastRow()).getValues(); 

    var maxInColumn = colArray.sort(function(a,b){return b-a})[0][0]; 
    return maxInColumn; 
} 

пожеланиями, Фаусто

Смежные вопросы