1

Я хочу,Как сделать скрипт [Условное форматирование]?

Если Лист1 ColumnB = Sheet89 Columna

Затем совпадающая sheet1 Колонка B-клетка будет зеленой Вот мой demo sheet.

Основываясь на некоторых рекомендациях, я сделал это, но не работал.

function formatting() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); 
    var columnB = sheet.getRange(1, 2, sheet.getLastRow()-1, 1); 
    var bValues = columnB.getValues(); 
    var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89'); 
    var columnO = sheet89.getRange(1, 1, sheet.getLastRow()-1, 1); 
    var oValues = columnO.getValues(); 

     for (var h = 0; h < bValues.length; h++) { 
      for (var i = 0; i < oValues.length; i++) { 
       if (oValues[i][0] == bValues[h][0]) { 
       sheet.getRange(i + 2, 1, 1, 1).setBackgroundColor('green'); 
       } 
      } 
     } 
} 
+2

Новые Google Таблицы позволяют сделать это без газа, с помощью условного форматирования с диапазонами –

+1

@ZigMandel можно ли использовать условное форматирование через листы? – Chris

+0

см. Здесь пример того, как сравнивать со значениями в других ячейках: http://stackoverflow.com/questions/20545961/google-spreadsheet-conditional-formatting-based-on-another-cell-value/20547577#20547577 –

ответ

0

Это решение ниже будет перебирать каждую ячейку со значением в столбце В sheet1 и проверить его против каждого значения в колонке А sheet89 (хотя вы назвали этот ColumnO, согласно вашей функции GetValues, он будет захватывать значения из столбца A).

Если он находит совпадение, он станет зеленым в ячейке в столбце B листа 1. В вашем примере кода вы используете переменную цикла i (которая итерации через строки на листе89), чтобы ячейка на листе1 стала зеленой. Неясно, какие ячейки вы хотите позеленеть. Я предположил, что это клетка на sheet1, так что я изменил код для

sheet.getRange(h+1, 2).setBackgroundColor('green'); 

Кроме того, функция getRange для одной ячейки требуется только 2 аргумента, поэтому я удалил NumRows и numColumns аргументов для линии, которая окрашивает зеленый.

Я не уверен, почему bValues ​​и oValues ​​исключают последнюю строку, но я удалил -1 в каждом из них, так как это приведет к сбою кода, если по какой-либо причине он запущен на пустой лист. GetLastRow() возвращает последнюю строку со значением, а не следующую пустую строку на листе. Если вы хотите захватить весь лист, вы не должны использовать -1.

function formatting() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); 

    var columnB = sheet.getRange(1, 2, sheet.getLastRow(), 1); 
    var bValues = columnB.getValues(); 

    var sheet89 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet89'); 
    var columnO = sheet89.getRange(1, 1, sheet.getLastRow(), 1); 
    var oValues = columnO.getValues(); 

    for (var h = 0; h < bValues.length; h++) { 
    for (var i = 0; i < oValues.length; i++) { 

     if (oValues[i][0] == bValues[h][0]) { 
     sheet.getRange(h + 1, 2).setBackgroundColor('green'); 
     } 
    } 
    } 
} 
0

То, что я понимаю, требуется (а не то, что показывает примерный лист в настоящее время), с условным форматированием.

В таблицах Google условное форматирование по листам не так просто, как на одном листе, из-за безопасности и, следовательно, авторизации. Например, вы можете, например, скопировать содержимое Sheet89 в Sheet1 (всего две ячейки), чтобы избежать этой проблемы или написать сценарий. По крайней мере, сохраните диапазоны как можно меньше.

Однако это возможно, хотя и может быть медленным и требует авторизации.

Пожалуйста, удалите любое условное форматирование Sheet1 ColumnA тогда:

Выберите Columna в Sheet1, Формат, Условное форматирование ... Форматирование ячеек, если ... Custom formula is и

=countif(IMPORTRANGE(" k e y ","Sheet89!A:A"),A1)<>0 

с подсветкой на ваш выбор и Выполнено.

k e y выше представляет собой уникальный идентификационный код для Sheet89 (будет выглядеть примерно как 1u4vq8vDne-aKMVdJQPREGOxx7n99FqIb_kuJ_bG-PzM).

Изображение показывает в настоящее время то, что находится в столбце C изображения (но находится в столбце A примера), а F1 и F2 на изображении показывают, что находится в столбце A Sheet89 примера.Бледнее коричневый был применен с Условное форматирование ::

SO20889520 example

Смежные вопросы