首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将单元格与命名区域进行比较以设置条件格式

将单元格与命名区域进行比较以设置条件格式
EN

Stack Overflow用户
提问于 2019-05-30 04:50:44
回答 1查看 57关注 0票数 1

我正在从10个不同的传感器导入每小时的传感器数据。简而言之,我希望能够看到每小时的数据何时超过了一周中某一天和一天中某一时间的平均使用率。

我已经创建了命名为每个传感器名称的表(例如,“32022”),每个表都是日期的26列矩阵,从00:00到23:00的所有小时,以及从日期中提取星期几的WEEKDAY()函数。

在一个单独的工作表("Daily Usage")中,我为每个传感器手动创建了10个不同的按小时计算的每日平均使用量矩阵,其中A列是一周中的哪一天(按名称),以下24列是一天中的所有小时。这些矩阵中的每一个都被制成一个名为"averageusage_32022“的命名范围。

我正在尝试迭代所有数据,并确定哪些数据在特定日期/时间高于平均值,如果超出平均值,则将该单元格的背景更改为红色。

从我收集的信息来看,我不能在条件格式中引用命名范围,这就是为什么我希望通过编程来解决这个问题。

代码语言:javascript
复制
  var currentsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("32033");
  var usagerange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName('averageusage_32033');

  //how many rows there are in the sheet
  var firstcolumn = currentsheet.getRange("A1:A").getValues();
  var bottomrow = firstcolumn.filter(String).length; 

  //loop through every day, check day of week, iterate through each hour, compare cell to "averageusage" range

  for (var i = 2; i < bottomrow; i++){
    var day = currentsheet.getRange(i,26).getValue;
    for (var j = 2; j < 26; j++){
      if (currentsheet.getRange(i,j).getValue() > usagerange.getRange(day,j).getValue()){
        currentsheet.getRange(i,j).setBackground("red");
        }
     }
   }  

我收到一个Cannot find function getRange in object Range.的错误,我认为这是因为我不能像引用任何普通的工作表那样引用命名范围。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 06:11:04

由于getRangeByName(name)方法返回Range而不是NamedRange,因此您需要从写入usagerange的方法中删除参数和getRange()方法(请注意,对于值Arraydayj将从0开始)。此外,请确保将值写入循环外部的变量中,以减少服务调用:

代码语言:javascript
复制
var usageVals = usagerange.getValues();
//...loop
if(currentsheet.getRange(i,j).getValue() > usageVals[day-1][j-1]) {
  //do something;
}
//...loop
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56368316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档