Google Sheets. Как применить условное форматирование в зависимости от нажатия чек-бокса?
Вопрос не просто в том, что если какая-то ячейка false или true возвращает, то от этого статуса зависело бы состояние других ячеек, это просто делается через банальный if-чик в гугл-таблицах. Вопрос в том, чтобы если ячейка, от которой зависят остальные - имеет определённый статус, то другие ячейки можно было бы спокойно изменять.
Допустим, что Ячейка1 возвращает true и в Ячейке2 по формуле указано возвращать true в таком случае.
Но если Ячейка1 возвращает false, то я хотел бы иметь возможность в Ячейке2 произвольно мочь выставлять true или false. И когда Ячейка1 снова станет true, то Ячейка2 также снова примет зафиксированное состоние ture. То есть я хочу при каком-то выбранном состоянии иметь возможно видоизменять состояние по своему хотению.
На практике хотелось бы реализовать что-то типа нескольких чек-боксов в гугл таблицах.
Несколько чек-боксов становятся заполненными, если какой-то один заполнен, но если первый не заполнен, то я могу произвольно группу чек-боксов отмечать как мне захочется. Возможно ли это вообще?
dollar, Имел ввиду состояние )
Я понимаю, что каждое состояние можно описать формулой, но как должна выглядеть формула «делай, что хочешь»?)
Попробую ещё раз рассказать, что я хочу в итоге.
У меня есть n количество чек-боксов, которые меняют своё значение с true на false и обратно по нажатию. И ещё один такой же чек-бокс отдельно. Группу чек-боксов я помечаю как хочу сколько угодно раз меняя их статус. А потом нажимаю отдельностоящий чек-бокс и все они становятся незаполненными, очищаются до определенного статуса. И опять я могу самостоятельно проставлять им какой угодно статус. И так до бесконечности.
Пример бы с описанием. Это помогает задачу в голове уложилось получше.
Написано
Решения вопроса 1
Григорий Боев
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
Используйте onEdit(event)
function onEdit(event) {
//Возникает при изменении ячейки
var ss = event.source.getActiveSheet();//Текущий лист
var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
var row = event.range.getRow(); //Номер строки
var col = event.range.getColumn(); //Номер столбца
var newValue = event.value; //Новое значение
var oldValue = event.oldValue; //Старое значение
if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return; //Указываем на каких листах должен работать скрипт
//Что-то делаем...
};
Если значение нужной ячейки поменялось с TRUE на FALSE, то изменяете все остальные флажки.
Оттолкнувшись от вашего примера создал макрос, где делаю ручками то, что мне надо, привязал это к триггеру на редактирование таблицы и в макросе указал условие на активность чек-бокса.
Конкретно вашим кодом не воспользовался, но натолкнуло на то, что мне было нужно )
Написано
Григорий Боев
@ProgrammerForever Куратор тега Google Sheets
let newValue = 'FALSE';
let range = spreadsheet.getRange('A3:A14');//Или любой другой диапазон
let data = range.getValues();
data = data.map(row=>row.map(el=>newValue ));
range.setValues(data);
Григорий Боев,
Добрый день!
А как сюда прикрутить такой момент: если в какой-то из ячеек строки, в кторой есть несколько флажков (допустим в A1:M1 есть 5 флажков в ячейках A1, F1, G1, K1 и L1), устанавливается значение TRUE (флажок установили в ячейке G1), то остальные флажки в этой строке блокируются (или удаляются), и строка автоматически скрывается (или группируется и сворачивается).
Заранее благодарю!