如果另一个区域中存在相同的数据,如何将一个区域中的单元格突出显示为红色

How to highlight cells red in a range if the same data exists in another range

我正在开发一个名为 'TEAM SETUP'

的 sheet

我有一个单元格范围内的姓名列表:B29:E39 这是一个范围,我将姓名作为工作人员放入 'Holiday'

然后我将姓名(部署人员)放入范围内的不同角色:B2:S27

我想突出显示 B2:S27 范围内的任何单元格,其中值也存在于 B29:E39 中,以向我发出信号,表明我已经部署了一名 'on holiday'[= 的工作人员10=]

这是否可以通过脚本或条件格式实现,如果有人能帮助我解决这个问题,我将不胜感激。

通过脚本进行操作非常简单。请参阅下面的脚本:

代码:

function onEdit(e) {
  var sheet = e.source.getActiveSheet();

  // Define ranges to only continue the function when edited cell is in there
  // This is to prevent unnecessary execution time as we have quotas
  var dataRange = { // B2:S27
    top : 2,
    bottom : 27,
    left : 2,
    right : 19
  };
  var holidayRange = { // B29:E39
    top : 29,
    bottom : 39,
    left : 2,
    right : 5
  }
  // if edited cell is in data or holiday range
  if(isInRange(e.range, dataRange) || isInRange(e.range, holidayRange)) {
    var data = sheet.getRange("B2:S27").getValues();
    // To filter only non blank cells, add filter(Boolean)
    var holiday = sheet.getRange("B29:E39").getValues().flat().filter(Boolean);

    data.forEach(function (row, i) {
      row.forEach(function (cell, j) {
        if (holiday.includes(cell))
          sheet.getRange(i + 2, j + 2).setBackground("red");
        // set to white if it turns out the value is now not found
        else
          sheet.getRange(i + 2, j + 2).setBackground("white");
      });
    });
  }
}

function isInRange(cell, range) {
  var startRow = range.top;
  var endRow = range.bottom;
  var startColumn = range.left;
  var endColumn = range.right;
  return cell.getRow() >= startRow && cell.getRow() <= endRow &&
         cell.getColumn() >= startColumn && cell.getColumn() <= endColumn;
}

输出:

参考: