首页 > 解决方案 > 谷歌表格突出显示每行脚本中的最低数字

问题描述

我希望每隔一行突出显示最小的数字。从第 2 行开始的所有奇数。我可以循环行但我无法获得最小单元格。

数据:

Gate1    Gate2    Gate3    Gate4
  12      45        7        8
Gate1    Gate2    Gate3    Gate4
  5      57        4        10
Gate1    Gate2    Gate3    Gate4
  12      45        7        8

剧本到此为止

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var startRow = 2;


  for ( var i = startRow; i <= mySheet.getLastRow(); i++){
    //Get the lowest value in the row and change cells text color to green

  }

}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


  • 您想将单元格的背景颜色更改为绿色。
  • 当单元格的值是每行中的最小数字时,您想更改颜色。
  • 您想使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,这个答案怎么样?请认为这只是几个可能的答案之一。

流动:

该示例脚本的流程如下。

  1. getDataRange()使用和检索所有值getValues()
  2. 对于奇数行,检索每行的最小数。并设置颜色。在这种情况下,它是green.
  3. 颜色是使用 设置的setBackgrounds()

示例脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getDataRange();
  var values = range.getValues();
  var colLen = values[0].length;
  var colors = values.map(function(row, i) {
    if (i % 2 == 1) {
      var min = Math.min.apply(null, row);
      return row.map(function(col) {return col == min ? "green" : null});
    }
    return new Array(colLen);
  });
  range.setBackgrounds(colors);
}

笔记:

  • 在此脚本中,null用作除最小值之外的颜色。但是如果你想给它颜色,请修改上面的脚本如下。

    •       return row.map(function(col) {return col == min ? "green" : null});
          }
          return new Array(colLen);
      
    •       return row.map(function(col) {return col == min ? "green" : "white"});
          }
          return Array.apply(null, new Array(colLen)).map(function(_, i) {return "white"});
      

参考:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

编辑:

从您共享的电子表格中,上面的脚本已针对它进行了修改。

示例脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var range = sheet.getDataRange();
  var values = range.getValues();
  var colLen = values[0].length;
  var colors = values.map(function(row, i) {
    if (i % 2 == 0) {
      row.shift();
      var min = Math.min.apply(null, row);
      return [null].concat(row.map(function(col) {return col == min ? "green" : null}));
    }
    return new Array(colLen);
  });
  range.setBackgrounds(colors);
}

推荐阅读