簡體   English   中英

根據日期條件格式化單元格

[英]Conditionally formatting cells based on date

我想要基於腳本的格式來對日期列進行顏色編碼。

第1行是標簽。 Cols CE包含日期;這些是我要為每個日期設置顏色格式的單元格。 我從有條件的黃色開始,一旦粘貼此障礙,就會添加更多顏色。

希望檢查每個單元格並對其進行適當着色。 當前版本正在毫無理由地為單元格着色,顯然是逐行着色。 (C2:E9)和(C13:E13)范圍的所有三列都變為黃色,而C10:E12和C14:E14保持正常。 所有這些范圍中的許多日期都是相同的。

我的代碼:

 function formatting() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses'); var columnO = sheet.getRange(2, 3, sheet.getLastRow() - 1, 3);//the range starts at column 3. var oValues = columnO.getValues(); for (var i = 0; i < oValues.length; i++) { for(var j = 2; j <= 4; j++) {//j=2 is actually column 5 //convert dates from GMT to local var thisDay = new Date(); var todayLocal = thisDay.toLocaleString(); var bullDate = new Date(oValues[i][0]); var bullLocal = bullDate.toLocaleString(); if (bullLocal < todayLocal) { sheet.getRange(i + 1, j + 1, 1, 1).setBackgroundColor('yellow'); } } } } 

我認為,還有其他方法可以做到這一點,但是要設法提高代碼效率。 有想法嗎?

在您的函數中,范圍從第3列開始,因此oValues [0] [0]實際上是在第1行column3處找到的。

嘗試這個:

function formatting() {
  var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
  var rg=sheet.getDataRange();//this range starts at column 1
  var vA=rg.getValues();
  var today = new Date();
  for(var i=0;i<vA.length; i++){
    for(var j=2;j<=4;j++){//j=2 is the third column
      var bullDate = new Date(vA[i][j]);  
      if (bullDate < today){
        sheet.getRange(i+1,j+1).setBackgroundColor('yellow');
      }
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM