Как мне изменить непостоянное число на 0 один раз? - PullRequest
0 голосов
/ 02 ноября 2019

В гугл листах у меня есть таблица имен и номеров, которые могут постоянно меняться, я пытаюсь сделать так, чтобы, когда я набираю имя человека (может быть где угодно), тогда цифры в этой строке изменялись на 0До сих пор это легко сделать, но проблема в том, что после того, как он вернется к нулю, ему нужно снова разрешить изменение чисел, поэтому ему нужно только один раз изменить числа.

Пока я сделалнесколько рабочая формула:

=IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0)

Проблема в том, что она вычтет 1 из числа, поэтому, если число равно 3, оно изменит число на 2.

=countif(A$1:A, E2) -Подсчитывает, сколько раз кто-то заполнил форму и сложил число. =IFERROR(IF(A2=VLOOKUP(A2,S$1:S,1, FALSE), -1, 0), 0) - Видит, было ли напечатано имя, совпадающее с тем, которое есть в его строке, и если это было бы затем вычесть 1.

Например: Допустим, у Дейва есть числа 0 3 6 (каждое в ихсобственную ячейку, но в той же строке), и я помещаю имя «Дейв» в любое место на листе, что я хочу, чтобы цифры были изменены на 0 0 0 (он будет делать что-то вроде -0, -3, -6), но затем сохранитьсчитая после сброса 0 3 6 на 0 0 0.

Имейте в виду, что имена меняются, поэтому наличие "Human1" или чего-то подобного в формуле не будет работать.

1 Ответ

0 голосов
/ 04 ноября 2019

Возможно, использование Apps Script поможет вам. Чтобы создать скрипт на вашем листе, перейдите на Tools > Script editor. Я не уверен на 100%, понял ли я вашу настоящую проблему, но из вашего примера я сделал вывод, что если вы напишите имя, соответствующее любому значению из столбца A, оно заменит значения из B, Cи D с 0.

    function onEdit(e) {

      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Final result 1 column");
      var col_A = sheet.getRange("A2:A").getValues();

      var name_typed = e.value; //The value you just typed in the sheet

      for (var i = 0; i < col_A.length; i++){

        if (col_A[i] == name_typed){

          var range = sheet.getRange(i + 2, 2, 1, 3); //row found, first column, number of rows, number of columns
          var formulas = range.getFormulas(); //saves the formulas from B,C,D in the variable

          range.setValues([[0, 0, 0]]); //sets columns to zero
          range.setFormulas(formulas); //sets the formulas back to B,C,D

          break;
        }

      }

Приведенный выше скрипт получает значение, введенное вами на любом из листов, сравнивает его со столбцом A листа «Столбец с конечным результатом 1» и, если оно совпадает, заменяетзначения из B, C и D с 0. В случае, если у этих столбцов есть формулы, он сохраняет их в переменной, чтобы записать их сразу после установки нулей.

Если в этих ячейках нет формул, прокомментируйте строку range.setFormulas....

Ссылки

...