You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:36:23