当前位置: 首页 > 知识库问答 >
问题:

如果另一个工作表中的相同单元格不为空,Google工作表条件格式化为彩色单元格

尤祖鹤
2023-03-14

我有2张纸A和B。如果B张纸中完全相同的单元格不是空的,我想让A张纸给单元格着色。例如,如果页B中的单元格A1具有字符串,则页A中的单元格A1将被着色。

假设我想做这个来比较一个大范围,我应该怎么做呢?

示例:https://docs.google.com/spreadsheets/d/1P3Ob_mclpXWmILfKwD4R6JN2wAYPUcNZlmtF9LxilV0/edit?usp=sharing

活页B中的单元格A2:C2D5K2不是空的。因此,表A中的相应单元格将被涂成红色。

共有2个答案

潘辰龙
2023-03-14

不熟悉如何使用自定义条件格式公式来完成这一点,所以等待其他人来帮助你。

但是,我可以为您提供一个谷歌应用脚本解决方案。

以下脚本将检查工作表B中的数据范围,并将构建一个颜色数组。如果values数组中的值为空,则此数组的元素将具有白色十六进制颜色#ffffff“,如果值不是空的,则该元素将具有红色#ff0000

然后,它将基于此颜色数组一次性为工作表A上色。即使在较大范围内,脚本也相对较快。

别忘了将"表A""表B"调整为表的名称。

function colorCells(){
  const ss = SpreadsheetApp.getActive();
  const sheetToColor = ss.getSheetByName("sheet A");
  const sheetToCheck = ss.getSheetByName("sheet B");  
  const bValues = sheetToCheck.getDataRange().getValues();
  const aColors=bValues.map(r=>r.map(v=>v==''?"#ffffff":"#ff0000"));
  sheetToColor.getRange(1,1,sheetToCheck.getLastRow(),sheetToCheck.getLastColumn()).
  setBackgrounds(aColors);
}

单击Tools=

如果您想让它“自动”工作,那么您可以设置一个时间触发器,每隔n分钟为您执行这个函数。

您可以执行相同的操作,但使用更具用户互动性的方式。再次,复制,粘贴

当用户在工作表B中的同一单元格上进行编辑时,以下脚本将更改工作表a中单元格的颜色:

function onEdit(e) {  
  // adjust this to your needs:
  const sheetToColorName = "sheet A";
  const sheetToCheckName = "sheet B";
  const rng = e.range;
  const cell = rng.getA1Notation();      
  if (rng.getSheet().getName()==sheetToCheckName){
    const sheetToColor = e.source.getSheetByName(sheetToColorName);
    if(rng.getValue()!=''){        
        sheetToColor.getRange(cell).setBackground("#ff0000"); //red     
    }
    else {
        sheetToColor.getRange(cell).setBackground("#ffffff"); //white
    }    
  }
}

拓拔曦
2023-03-14

可以使用以下公式作为条件格式规则:

=NOT(ISBLANK(INDIRECT("B!"&address(row(),column()))))

A中的公式!A2只是告诉你在工作表中发生了什么

 类似资料:
  • 问题内容: 我想根据第1列中的值给表格单元格上色,如果值不等于第1列中的值,则颜色应为青色,但我的代码不起作用: 问题答案: 是否必须突出显示单元格的决定必须在TableCellRenderer中进行。它不能在JTable中进行。因此,(没有)没有理由要重写JTable中的方法。相反,您可以将列的CellRenderer设置为TableCellRenderer的自己实现。 在此示例中,列2和3接收

  • 我试图使用条件格式(也许还有MATCH函数?)在Google Sheet中对A1到G10中具有相同内容的任何单元格进行着色。例如,如果B3说“海鹰加油”,F5也说“海鹰加油”,我希望这两个单元格都有颜色。 我看了这个问题,看起来很接近(条件格式化单元格,如果它们的值等于另一列的任何值),但是我的公式技能很弱,我不知道如何让它按照我想要的方式工作。如果这里有人能帮我弄清楚,我将非常感激。

  • 我的脚本非常有效,但仅适用于活动工作表。如何更改它,使其搜索整个工作簿,并检查每个工作表中相同的单元格位置(例如:“AC2”)的值为1或2,并选择是否隐藏或显示该工作表,然后检查其他工作表并执行相同的操作? 我已经试了好几天试图找到一个例子,但我找到的唯一例子是一个独特的电子表格中的一个单元格,该单元格控制所有其他单元格的操作,我没有太多使用谷歌脚本的经验,无法让它同时检查每个电子表格。到完成时,

  • 对于包含多个工作表的电子表格,我有一个脚本,可以在按下按钮时删除特定范围内所有工作表中的数据。 现在我有一个主电子表格,它链接到其他几个电子表格(以及它们包含的工作表)(导入范围、查询等)。)。 是否可以通过脚本在连接的电子表格中按一个按钮删除特定范围内的数据,我想从主电子表格中触发此操作?! 使用脚本从工作表中删除的数据是手动用户输入的,因此不来自主电子表格。表1中应删除的范围/单元格不同。A和

  • 我有多个谷歌表单,有几个栏目每天更新。所有工作表都合并到一个摘要页面,当在这些工作表中输入新数据时,该页面将更新。 如何在汇总表的每列中找到最后一个非空单元格(不包括包含返回空白公式的单元格)?例如,A列保存日期,它只是查看团队负责人是否在其工作表中输入了数据。如果是,则输入她的工作表中的日期。公式是: 当我想返回列中的最后一个日期时,我尝试使用以下公式: 它返回一个空白,因为有空单元格,其中的公