Форматировать цвет ячейки на основе текстового содержимого ячейки - PullRequest
0 голосов
/ 14 мая 2019

Я хочу сделать что-то вроде этого:

У меня есть своего рода "реляционная" электронная таблица, и я хочу, чтобы строки были окрашены в соответствии.

enter image description here

Я вручную выбираю уникальный цвет для каждой категории на листе «Категории» или генерирую уникальный цвет на основе содержимого строки, либо подойдет для моего варианта использования.

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

в условном форматировании выберите диапазон, к которому вы хотите применить цвета, выберите цвет,
выберите Text is exactly и установите значение:

enter image description here

0 голосов
/ 14 мая 2019

Не лучшее решение, но оно работает
enter image description here

function onEdit(e) {
  if(e){
    var ss = e.source.getActiveSheet();
    var range = e.source.getActiveRange();

    var r1 = range.getRow();
    var c1 = range.getColumn();
    var rowsCount = range.getNumRows();

    for(var i=0; i<rowsCount; i++){

      var row = ss.getRange(r1+i,1,1,ss.getMaxColumns());
      updateRow(row, ss);
    }
  }
}

function updateRow(row, ss){
  if (ss.getName() == "Entries") { // This is the sheet name

    var cell = row.getCell(1,1);
    var firstCellValue = cell.getValue();

    if(firstCellValue){
      cell.setBackgroundColor(stringToColor(firstCellValue));
    }
    else{
      cell.setBackgroundColor(null);
    }
  }
}


function stringToColor(str) {
  var hash = 0;
  for (var i = 0; i < str.length; i++) {
    hash = str.charCodeAt(i) + ((hash << 5) - hash);
  }
  var colour = '#';
  for (var i = 0; i < 3; i++) {
    var value = (hash >> (i * 8)) & 0xFF;
    colour += ('00' + value.toString(16)).substr(-2);
  }
  return colour;
}

На основании этого ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...