Google Sheets Apps Script:获取列、行及任意区域的最大值
获取指定行及任意二维数组最大值的Apps Script修改方案
一、获取指定行的最大值
原脚本针对单列数据设计,要获取指定行的最大值,需调整getRange参数并修改reduce的处理逻辑:
代码示例
// 定义目标行号(示例为第5行) var targetRow = 5; var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 方式1:先转一维数组再计算 var rowValues = sh.getRange(targetRow, 1, 1, sh.getLastColumn()).getValues()[0]; var maxRowValue = rowValues.reduce((max, cell) => cell > max ? cell : max, -Infinity); // 方式2:直接通过嵌套reduce计算 var maxRowValue = sh.getRange(targetRow, 1, 1, sh.getLastColumn()).getValues() .reduce((rowMax, row) => row.reduce((cellMax, cell) => cell > cellMax ? cell : cellMax, rowMax), -Infinity);
修改要点
getRange参数改为(目标行号, 起始列号, 行数=1, 列数=最后一列),确保选中整行数据- 单列场景下每个
item是单元素数组(需取item[0]),单行场景下每个cell直接是单元格值,无需索引取值
二、获取任意二维数组的最大值
对于任意二维数组(比如表格中获取的多行多列数据、自定义数组),通过嵌套reduce遍历所有元素即可:
代码示例
// 示例二维数组(可替换为表格获取的数组,比如sh.getDataRange().getValues()) var twoDArray = [[12, 45, 3], [78, 23, 56], [9, 81, 15]]; var maxArrayValue = twoDArray.reduce((globalMax, row) => { // 先计算当前行的最大值 var rowMax = row.reduce((cellMax, cell) => cell > cellMax ? cell : cellMax, -Infinity); // 再和全局最大值比较 return rowMax > globalMax ? rowMax : globalMax; }, -Infinity);
修改要点
- 外层reduce遍历每一行,内层reduce遍历当前行的每个单元格
- 初始值设为
-Infinity,确保能正确处理负数场景
核心逻辑说明
原脚本的核心是利用reduce方法迭代比较值,不同场景的差异仅在于迭代范围:
- 单列:迭代每行的单元素值
- 单行:迭代该行的所有单元格值
- 二维数组:嵌套迭代所有行和单元格
内容的提问来源于stack exchange,提问作者Seb Mainguet
相关产品推荐
相关产品推荐

