需要帮助使用Google Apps脚本查找Google表格列中的最大值

use*_*873 4 google-sheets google-apps-script

我有一张有几千行和两列的表格.我需要编写一个脚本,该脚本将增加为行,并将其中一列中的值与同一列中的前50个值进行比较,并查看它是否大于前50个条目的最大值.

我一直在尝试使用Math.max(),但无法找到正确的语法来使其在动态范围内工作.

Fau*_* R. 6

当在电子表格中读/写时总是尝试立即进行,避免在单元格上循环

我确信有一个更好的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;
}
Run Code Online (Sandbox Code Playgroud)

问候,福斯托

  • 您建议不要循环遍历单元格,但 sort() 无论如何都必须至少读取每个单元格一次。找到最大值的时间复杂度为 O(n)。排序通常不是。您的建议背后有什么理由吗? (2认同)

ale*_*sky 5

var max = Math.max.apply(null, column.getValues());
Run Code Online (Sandbox Code Playgroud)

但是该列不能包含任何文本,只能包含数字和空值。否则,您需要从数组中排除文本。


wch*_*ito 2

您可以使用方法setFormula(formula)并使用类似的公式=MAX(Range)

getDataRange()方法可能很有用。获取数据范围后,您可以确定getLastRow()getLastColumn()的最大行数和列数。