#REF!добавляется в формулу с помощью setFormula () вместо фактической ссылки: IF (NOT (ISBLANK (N3)), # REF!, 0)) - PullRequest
0 голосов
/ 18 декабря 2018

Я создал скрипт, который генерирует учебники для учителей в школе.Сценарий добавляет формулы, которые преобразуют «необработанные оценки» в отдельные оценки.

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

Ниже приведена часть сценария, который я написал для достижения этой цели.

Проблема, с которой я столкнулся, заключается в том, что хотя формула строится правильно, некоторые изссылки на ячейки не добавляются.Вместо ссылки на ячейку я просто получаю #Ref!

В приведенном ниже примере листа 3 #ref!на самом деле должно быть O1, R1 и U1.

Я выделил эту часть в своем скрипте как переменную (totalRef), чтобы попытаться помочь мне отладить.

Моя первая мысльэто было потому, что формула добавлялась, и в некоторых случаях столбец, на который ссылались, еще не существовал, но я устранил это, и проблема все еще сохраняется.

Пример листа: https://docs.google.com/spreadsheets/d/1QXDinhu6Ywlf0lNe3dZBLWMf0pxPrKHgTqfPeEfn7ug/edit?usp=sharing

  var noOfAssessments = assessments.length;
  var currentCol = 14;//first raw mark assessment column
  var startCumul= "";
  var endCumul = "";
  for (var no = 0; no < noOfAssessments; no ++)
  {
    var totalRef = columnToLetter(currentCol+1)+"1";
    Logger.log(years[y] + " TOTALREF IS "+totalRef);
    startCumul = startCumul + "(IF(NOT (ISBLANK("+columnToLetter(currentCol)+(fRow +1)+")),"+columnToLetter(currentCol)+(fRow +1)+",0))";
    endCumul = endCumul + "(IF(NOT(ISBLANK("+columnToLetter(currentCol)+(fRow +1)+")),"+totalRef+",0))"
    if (no < noOfAssessments - 1)
    {
      startCumul = startCumul + "+";
      endCumul = endCumul + "+";
    }
    currentCol = currentCol + 3;//3 IS THE NUMBER OF COLS BETWEEN ASSESSMENTS. THIS VAL MIGHT NEED TO BE CHANGE IF USING QLA
  }

  var wholeCumulFormula = "=IFERROR(LOOKUP(ROUND((" + startCumul + ")/("+endCumul+")*"+getYearPercentages(years[y],setupData)+"),{";
  //add the base percentage boundaries
  var pBoundaries = getPercentageBoundaries(setupData);
  wholeCumulFormula = wholeCumulFormula + pBoundaries + "},{\"1C\",\"1B\",\"1A\",\"2C\",\"2B\",\"2A\",\"3C\",\"3B\",\"3A\",\"4C\",\"4B\",\"4A\",\"5C\",\"5B\",\"5A\",\"6C\",\"6B\",\"6A\",\"7C\",\"7B\",\"7A\",\"8C\",\"8B\",\"8A\",\"9C\",\"9B\",\"9A\"}),\"U\")";

  if (!yearData[fRow][12])//only overwrite blank cells
  {
    yearSheet.getRange(fRow+1,13,1,1).setFormula(wholeCumulFormula);
  }

Эта функция используется для создания ссылки:

function columnToLetter(column)
{
  var temp, letter = '';
  while (column > 0)
  {
    temp = (column - 1) % 26;
    letter = String.fromCharCode(temp + 65) + letter;
    column = (column - temp - 1) / 26;
  }
  return letter;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...