解释:
不熟悉如何使用自定义条件格式公式完成此操作,因此请等待其他人帮助您。
不过,我可以为您提供 Google Apps 脚本解决方案。
以下脚本将检查sheet B 中的数据范围,并将构造一个颜色数组。如果values 数组中的值为空,则此数组的元素将具有白色十六进制颜色#ffffff",如果值不为空,则为红色#ff0000。
然后它会一次性根据这个颜色数组为sheet A上色。即使对于大范围,该脚本也相对较快。
解决方案/解决方法:
不要忘记将"sheet A" 和"sheet 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 => Scipt editor,复制、粘贴并保存上述代码,然后点击播放按钮执行。
如果您希望它“自动”工作,那么您可以设置一个时间触发器,每隔n 分钟为您执行一次此功能。
奖励代码:
您可以执行相同的操作,但采用更加用户交互的方式。同样,将以下脚本复制、粘贴并保存到脚本编辑器,但这次不要执行它,因为它可以自行运行。
当用户编辑sheet B中的同一单元格时,以下脚本将更改sheet 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
}
}
}