如果在另一个工作簿 (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”列中找到345
和R345
时,您要更改背景“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);
}
参考:
如何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”列中找到345
和R345
时,您要更改背景“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); }