使用 Google App 脚本突出显示特定列中的最大值

Sta*_*000 3 javascript google-sheets google-apps-script

我正在尝试编写一个脚本,该脚本可以找到特定列(给定数据集中的比例列)中的最大值并相应地突出显示单元格。

下面是我目前所在的位置

function myFunction() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName('Sheet1');
var range = sh.getRange("G2:G17");
var values = range.getValues();
var newRange = SpreadsheetApp.getActiveSheet().getRange(2, 7, values.length, 1).getValues();
var maximumproportion = Math.max.apply(Math, newRange);
var maxarr = [];
maxarr.push(maximumproportion)
var backgrounds = [];
var fontColors = [];

range.sort([{column:7, ascending: false}]); // sort by number is column 7

if (newRange === maxarr) {
  backgrounds.push(["green"])
}else{
  backgrounds.push([null])
}
  SpreadsheetApp.getActiveSheet().getRange(2,7,values.length,1).setBackgrounds(backgrounds);
}
Run Code Online (Sandbox Code Playgroud)

下面是我为此使用的数据集 在此输入图像描述

因此,如果上面的代码正常工作,它应该突出显示最后一列中的第一行,即 0.27%,因为这是此列中找到的最大值。

对于下面的部分,我还尝试使用 for 循环。但没有运气

有人可以建议我如何才能完成这项工作吗?

// find the max value in Column G
  for (var i = 1; i < 17; i++) {
    console.log(newRange[i][0])
    if (newRange[i] === maxarr[i]) {
    backgrounds.push(["green"]);
    } else {
    backgrounds.push([null]);
    }
 }
  SpreadsheetApp.getActiveSheet().getRange(2,7,16,1).setBackgrounds(backgrounds);
}
Run Code Online (Sandbox Code Playgroud)

小智 5

答案1

您可以使用条件格式突出显示特定列中的最大值。

脚步

  1. Format > Conditional formatting
  2. 选择要应用格式的范围
  3. 选择Custom formula isFormat cells if
  4. 应用=(G:G)=MAX(G:G)以选择具有最高值的单元格

答案2

您可以通过简单的方式获取并突出显示最高值:

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet1');
  var range = sh.getRange("D2:D14")
  var values = range.getValues();
  var merged = [].concat.apply([], values);
  var max = Math.max.apply(Math,merged)
  var maxid = merged.indexOf(max)
  range.getCell(maxid+1,1).setBackgroundRGB(0,255,0)
}

Run Code Online (Sandbox Code Playgroud)

解释

  1. var merged = [].concat.apply([], values)将数组数组转换为整数数组。
  2. var max = Math.max.apply(Math,merged)获取范围内的最高值
  3. var maxid = merged.indexOf(max)获取最高值的索引
  4. range.getCell(maxid+1,1).setBackgroundRGB(0,255,0)更改所需单元格的背景。请记住,数组的索引从 0 开始,单元格的索引从 1 开始,因此您必须将 1 与索引相加。此外,在 RGB 中,绿色等于zero red, full green, zero blue