检查单元格是否为空

时间:2019-02-18 12:14:31

标签: google-apps-script cell

如果单元格为空并且其他列中的其他两个单元格也为空,我想更改单元格的颜色。如果其中之一有价值,那没关系。

在此屏幕截图中,仅需要对第5、6和7行进行着色:

SO54747074 question example

2 个答案:

答案 0 :(得分:1)

您无需执行应用脚本即可获得所需的效果。我创建了一个虚拟测试,看看是否适合您。它处于“查看”模式,因为...互联网...。 https://docs.google.com/spreadsheets/d/1ozOITqXNwtvYYmulJV6nrs3MB6SlsRAF8l9a8ImXZkg/edit?usp=sharing

我为要设置其格式的范围单元格(而非整个行)创建了一个自定义公式,用于单元格格式设置。(可能对于工作表引擎而言工作量过多)。

选择要应用格式的范围,然后从菜单中选择条件格式。 在我的示例中,“如果...,则设置单元格格式”设置为“自定义公式为”,并且值为= AND(ISBLANK($ C2),ISBLANK($ D2),ISBLANK($ E2))

您可以将此公式复制到希望显示格式的任何其他单元格中,从而使整个行都具有被格式化的外观。

enter image description here

答案 1 :(得分:0)

尝试一下:

您的问题没有指定哪些列,因此根据我认为的图像,您希望使用C,F和G列。

function onEdit(e) {
  var dflt='#ffffff';
  var fill='#ffff00';
  if(e.range.getSheet().getName()!='Sheet69'){return;}//you need to add your sheet name so that this only works on the appropriate sheets
  var ss=e.source;
  var sh=e.range.getSheet();
  var rg=sh.getRange(1,1,sh.getMaxRows(),sh.getMaxColumns());
  var vA=rg.getValues();
  var bA=rg.getBackgrounds();
  for(var i=0;i<vA.length;i++) {
    if(!vA[i][2] && !vA[i][5] && !vA[i][6]){
      for(var j=0;j<bA[i].length;j++) {
        bA[i][j]=fill;
      }        
    }else{
      for(var j=0;j<bA[i].length;j++) {
        bA[i][j]=dflt;
      }     
    }
  }
  rg.setBackgrounds(bA);
}