如何根据Google表格中其他单元格的值更改单元格的颜色

时间:2020-09-23 20:48:49

标签: javascript google-apps-script google-sheets conditional-formatting

我知道Google表格中的条件格式,但是我有一种特定的用例。

如果 ALL AN列或以下列中的单元格,我希望O列中的单元格n(一直向下)为绿色。 P中有pass一词

但是,如果ANO中的单元格中的 ANY 包含,我希望列P中的单元格n为红色fail,无论它们是否还包含pass

有没有办法做到?

2 个答案:

答案 0 :(得分:2)

说明:

  • 您可以使用Google Apps Script来实现自己的目标 特别是onEdit()函数来模仿自动(编辑时) 条件格式的更新。

  • 以下脚本将获取 N O 中所有单元格的值 和 P 列,如果所有这些值通过,则 会将{strong> A 列的背景颜色set变为绿色。在 另一方面,如果其中至少一个不是 pass ,它将设置 A 列的颜色变为红色。随时将sheet_name更改为您自己的工作表名称。


解决方案:

function onEdit(e) {
  
 const sheet_name = 'Sheet1';
 const col = e.range.getColumn();
 const as = e.source.getActiveSheet();
 
 if(as.getName() === sheet_name && col>13 && col<17){
 
   const data = as.getRange('N1:P').getValues().flat();
   const range = as.getRange('A1:A');
   const allEqual = arr => arr.every( v => v === arr[0] );
   
   if(allEqual(data)){
     range.setBackground("green");
  }
   else {
     range.setBackground("red");
  }
 }
}

说明/演示:

demonstration

答案 1 :(得分:1)

如果要使用公式而不是脚本,则可以始终使用以下2条规则:

第一个规则:

如果{strong> ALL AN列或第O列中的单元格(并一直向下)为绿色P中有pass一词

=COUNTIF($B$1:$D,">""")+COUNTIF($B$1:$D,"")=COUNTIF(ArrayFormula(REGEXMATCH($B$1:$D,"\bpass\b")),true)

enter image description here

第二个规则:

如果ANO中的单元格中的 ANY 包含{ {1}},无论它们是否还包含P

fail

enter image description here