如果在另一个工作簿 (ID) 范围 Sheet2!(A2:A) 中相同的数字或前缀匹配,则更改单元格背景颜色

Change cell background color if the same number or with prefix matches in another work book (ID) range Sheet2!(A2:A)

如何highlight/alert D5 加上背景颜色,如果单元格 (D5) 值与另一个工作簿 ID 范围 Sheet2!(A2:A) 匹配。基于两个标准。

一个是带数字的,例如 345,另一个是带有数字前缀的字母,例如。 R345

https://docs.google.com/spreadsheets/d/1ngvrwjC9eoLBu0gpLUdskBdkKylhoSPTjBk5sY-V3D8/edit#gid=0

我相信你的目标如下。

  • 您想使用从“Sheet1”的单元格“D5”中检索到的值来搜索“Sheet2”的“A”列的值。
  • 例如当搜索值为R345时,当在“Sheet2”的“A”列中找到345R345时,您要更改背景“Sheet1”的“D5”颜色为红色。
    • 在这种情况下,我认为当找不到搜索值时,您可能希望删除背景色。
  • 您想使用 Google Apps 脚本实现此目的。

在这种情况下,下面的示例脚本怎么样?

示例脚本:

function myFunction() {
  const sheetName1 = "Sheet1"; // Please set the sheet name.
  const sheetName2 = "Sheet2"; // Please set the sheet name.

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const [sheet1, sheet2] = [sheetName1, sheetName2].map(s => ss.getSheetByName(s));
  const searchRange = sheet1.getRange("D5");
  const searchValue = searchRange.getValue();
  const m = typeof searchValue == "string" ? Number(searchValue.match(/(\d+)/)[1]) : searchValue;
  const search = sheet2.getRange("A2:A" + sheet2.getLastRow()).createTextFinder(`^R${m}$|^${m}$`).useRegularExpression(true).matchEntireCell(true).findAll();
  searchRange.setBackground(search.length == 2 ? "red" : null);
}
  • 在此示例脚本中,搜索值是从“Sheet1”的“D5”中检索的。并且,这些值是从“Sheet2”的“A”列中搜索的。当找到 2 个值时,背景颜色更改为红色。
  • 我使用 TextFinder 来检查搜索值的数量。

注:

  • 上面的示例脚本可以用脚本编辑器运行。例如,下面的示例脚本怎么样?在这种情况下,当您编辑单元格“D5”时,脚本是 运行 通过 OnEdit 的简单触发器。

      function onEdit(e) {
        const sheetName1 = "Sheet1"; // Please set the sheet name.
        const sheetName2 = "Sheet2"; // Please set the sheet name.
    
        const range = e.range;
        const sheet = range.getSheet();
        if (sheet.getSheetName() != sheetName1 || range.getA1Notation() != "D5") return;
        const sheet2 = e.source.getSheetByName(sheetName2);
        const searchValue = range.getValue();
        const m = typeof searchValue == "string" ? Number(searchValue.match(/(\d+)/)[1]) : searchValue;
        const search = sheet2.getRange("A2:A" + sheet2.getLastRow()).createTextFinder(`^R${m}$|^${m}$`).useRegularExpression(true).matchEntireCell(true).findAll();
        range.setBackground(search.length == 2 ? "red" : null);
      }
    

参考: