Ответ 1
Извините, это невозможно сделать с условным форматированием или script, просто выбрав ячейку. Однако вы можете выделить целую строку активной ячейки с помощью комбинации клавиш Shift-Spacebar.
Как разработать скрипт листа, который бы выделил активную строку?
Я хотел бы, чтобы вся строка меняла цвет шрифта или фона, когда активна одна ячейка в этой строке.
Я не хочу, чтобы триггером было какое-то конкретное значение в ячейке, просто нажатие на ячейку должно вызвать выделение для всей строки, к которой принадлежит ячейка.
Извините, это невозможно сделать с условным форматированием или script, просто выбрав ячейку. Однако вы можете выделить целую строку активной ячейки с помощью комбинации клавиш Shift-Spacebar.
Я понимаю, что этот вопрос был задан некоторое время назад, но я наткнулся на него, когда искал эту же функцию. Мое решение немного громоздко и не является полным решением для того, что вы ищете, но оно сочетает в себе как крошечный 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())
Проблема, которую вы описываете, может быть решена косвенно через флажок.
=$A1=TRUE
(вместо 1 используйте номер первой строки, выбранный на шаге 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);
};