Это должно делать то, что вы хотите. Он также будет обрабатывать добавление людей и транспортных средств. Я также использую таблицу, на которой я тестировал ее.
function colorCode() {
var ss=SpreadsheetApp.getActiveSpreadsheet()
var lr=ss.getSheets()[0].getLastRow() // get last row of sheet1
var lc=ss.getSheets()[0].getLastColumn() //get last column of sheet1
var lr1=ss.getSheets()[1].getLastRow() // get last row of sheet2
var lc1=ss.getSheets()[1].getLastColumn() ////get last column of sheet2
var sv=ss.getSheets()[0].getRange(1,2,1,lc-1).getValues() // get vehicles
var sn=ss.getSheets()[0].getRange(2,1,lr-1,1).getValues() // get names
var s1=ss.getSheets()[1].getRange(2,1,lr,lc-1)//exclude lehend
var rng1=s1.getValues() // get sheet2 data
var rng2=s1.getBackgrounds() // get background colors of dheet2 data
var col=1 //column for vehicles om sheet1
for(var m=0;m<sv[0].length;m++){ //for each vehicle
col=col+1 //add one to vehicle column
for(var n=0;n<sn.length;n++){ //for each name
for(var i=0;i<sn.length;i++){ //loop sheet2 data
for(var j=0;j<rng1[0].length;j++){
if(rng1[i][j].indexOf(sv[0][m])>-1 && rng1[i][j].indexOf(sn[n][0])>-1){ //if sheet2 data cell contains vehicle and name
var c=ss.getSheets()[0].getRange(n+2, col).setBackground(rng2[i][j]) //set color of vehicle and name on sheet1
}}}}}
}
Тест таблицы:
https://docs.google.com/spreadsheets/d/13zudMf86oOXHMSYg6rJGPguNfRxCr0aUHAktr0RqWzY/edit?usp=sharing
Чтобы переместить таблицу на sheet1 вниз 4 строки используйте это. Изменения отмечены в коде.
function colorCode() {
var ss=SpreadsheetApp.getActiveSpreadsheet()
var lr=ss.getSheets()[0].getLastRow() // get last row of sheet1
var lc=ss.getSheets()[0].getLastColumn() //get last column of sheet1
var lr1=ss.getSheets()[1].getLastRow() // get last row of sheet2
var lc1=ss.getSheets()[1].getLastColumn() ////get last column of sheet2
var sv=ss.getSheets()[0].getRange(5,2,1,lc-1).getValues() // get vehicles//CHANGED 1 tp 5
var sn=ss.getSheets()[0].getRange(6,1,lr-5,1).getValues() // get names//CHANGED 2 to 6 and -1 to -5
var s1=ss.getSheets()[1].getRange(2,1,lr,lc-1)//exclude legend
var rng1=s1.getValues() // get sheet2 data
var rng2=s1.getBackgrounds() // get background colors of sheet2 data
var col=1 //column for vehicles on sheet1
for(var m=0;m<sv[0].length;m++){ //for each vehicle
col=col+1 //add one to vehicle column
for(var n=0;n<sn.length;n++){ //for each name
for(var i=0;i<sn.length;i++){ //loop sheet2 data
for(var j=0;j<rng1[0].length;j++){
if(rng1[i][j].indexOf(sv[0][m])>-1 && rng1[i][j].indexOf(sn[n][0])>-1){ //if sheet2 data cell contains vehicle and name
var c=ss.getSheets()[0].getRange(n+6, col).setBackground(rng2[i][j]) //set color of vehicle and name on sheet1//CHANGED +2 to +6
}}}}}
}
Пользовательские формулы в условном форматировании _can_ ссылаются на другой лист, вам просто нужно обернуть ссылки на ячейки в 'косвенный'. Итак, вместо того, что-то вроде '= Sheet2! A3> Sheet3! B4', у вас будет' = косвенное («Sheet2! A3»)> косвенное («Sheet3! B4») '. – FTP
Спасибо за ваш ответ. Тем не менее, мне все еще трудно перевести возможность ссылаться на эту ячейку на копирование цвета ячеек на листе А на лист В. –