Выделите всю строку, когда ячейка активна

Как разработать скрипт листа, который бы выделил активную строку?

Я хотел бы, чтобы вся строка меняла цвет шрифта или фона, когда активна одна ячейка в этой строке.

Я не хочу, чтобы триггером было какое-то конкретное значение в ячейке, просто нажатие на ячейку должно вызвать выделение для всей строки, к которой принадлежит ячейка.

Ответ 1

Извините, это невозможно сделать с условным форматированием или script, просто выбрав ячейку. Однако вы можете выделить целую строку активной ячейки с помощью комбинации клавиш Shift-Spacebar.

Ответ 2

Я понимаю, что этот вопрос был задан некоторое время назад, но я наткнулся на него, когда искал эту же функцию. Мое решение немного громоздко и не является полным решением для того, что вы ищете, но оно сочетает в себе как крошечный script, так и немного условное форматирование.

Сначала я написал небольшой script с помощью функции onEdit():

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var targetCell = sheet.getRange('AD1');
  var activeCell = e.range.getA1Notation();
  targetCell.setValue(activeCell);
}

Я выбрал "AD1" в качестве целевой ячейки, так как он был далеко в стороне и, если нужно, я также мог бы скрыть этот столбец.

Затем я перешел к условному выделению и набрал это как пользовательскую формулу:

=ROW()=ROW(INDIRECT($AD$1))

Voila! Каждый раз, когда я редактирую ячейку, она автоматически выделяет эту целую строку.

Это не совсем то, что вы ищете, поскольку оно не будет автоматически выделять всю строку, как только вы нажимаете на ячейку... только при редактировании ячейки. Кроме того, если у вас есть другие запущенные формулы и другое условное форматирование, ваша электронная таблица может начать медленно. Но это самое близкое, что я видел там, к возможному решению.

Гораздо меньше, чем классный, но все же несколько функциональный относительно удобочитаемости - это основное выделение каждой другой строки. Например:

в условном форматировании: =ROW()=EVEN(ROW())

Ответ 3

Проблема, которую вы описываете, может быть решена косвенно через флажок.

  1. Вставьте столбец А в таблицу.
  2. В столбце A выберите ячейки в строках, которые вы хотите выделить цветом.
  3. В меню " Вставка" выберите " Флажок".
  4. Выберите целые строки, в которые был установлен флажок.
  5. В меню " Формат" выберите " Условное форматирование".
  6. На панели " Правила форматирования" добавьте формулу "Пользовательский" к этому правилу.
  7. Введите формулу =$A1=TRUE (вместо 1 используйте номер первой строки, выбранный на шаге 4).
  8. Укажите стиль форматирования.

Отныне, после установки флажка, будет выделена вся строка.

Ответ 4

К сожалению, этого нельзя сделать с помощью onFocus, как нам всем хотелось бы, но это достаточно хорошо работает для меня, используя событие onEdit. Это все еще странно медленно, поэтому, возможно, кто-то мог бы сделать это быстрее (конечно, от чтения/записи до свойств, но это единственный способ, который я нашел, чтобы отследить, какая строка подсвечена).

function onEdit(e){
  manageRowHighlight(e);  
}

function manageRowHighlight(e) {
  var props = PropertiesService.getScriptProperties();
  var prevRow = parseInt(props.getProperty('highlightedRow'));

  var range = e.range;
  var thisRow = range.getRow();

  //if it same row, just ignore
  if (prevRow == thisRow) {
    return;
  } else if (prevRow != null){
    //else unhighlight it
    range = range.getSheet().getRange(prevRow + ':' + prevRow);
    range.setBackground(null);
  }

  //highlight the current row 
  var range = range.getSheet().getRange(thisRow + ':' + thisRow);
  range.setBackground('#fff2cc')

  //save the row so highlight can be removed later
  props.setProperty('highlightedRow', thisRow);
};