Массив флажков, чтобы включить, когда установлен другой флажок - PullRequest
0 голосов
/ 04 марта 2020

Я создаю Google лист для символов Pathfinder (2-е изд). Система навыков представлена ​​рангами и отображается на листе стандартных символов в виде ряда флажков. Если ранжирование проверяется, то также должны быть отмечены все ранги ниже его, и поля выше должны быть не отмечены.

В приведенном ниже примере, поскольку проверяется «E», необходимо проверять и «T». Если игрок должен затем проверить «L», тогда «M» также должен стать проверенным. В противном случае, если игрок снял флажок «T», тогда «E» также должен стать не проверенным.

По сути, существует только пять возможных комбинаций.

enter image description here

Можно указать формулу для флажков, и я использовал эту для «Т». И я понимаю, как можно каскадировать такие формулы. Но формула в этом случае не сработает.

=IF(I11,TRUE,FALSE)

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

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

1 Ответ

1 голос
/ 05 марта 2020

Я создал для вас решение в Apps Script.

function onEdit(e) {
  var ss = e.source;
  var cell = e.range;

  var trainedCol = 1; // A
  var expertCol = 2;  // B
  var masterCol = 3;  // C
  var legendCol = 4;  // D

  if(cell.getColumn() >= trainedCol && cell.getColumn() <= legendCol){
    if(e.value == "TRUE"){
      // When you Check it checks all the column on the left 
      var newRange = cell.offset(0, - (cell.getColumn() - trainedCol) , 1, cell.getColumn() - trainedCol);

      newRange.check();
    }

    if(e.value == "FALSE"){
      // When you uncheck it unchecks all the columns on the right 
      var newRange = cell.offset(0, 1 , 1, legendCol - cell.getColumn());

      newRange.uncheck();

    }
  }
}

Вы можете протестировать это решение в этой электронной таблице .

Обычно логика c позади два варианта .

  1. Когда вы установите флажок, он отметит все остальные поля слева
  2. Когда вы снимаете флажок , он снимает все остальные поля справа

Если вы посмотрите на свой код, вы увидите обратите внимание, что я жестко запрограммировал позиции столбцов (обученный, эксперт, мастер, легенда) и предположил, что флажки будут рядом друг с другом, где обучение является первым, а легенда последним.

Так что если ваш флажки будут в другом столбце, просто измените числа в коде.

Но для предоставленного вами случая этого решения вам должно быть достаточно.

Ссылка

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