Как вернуть строку, которую может использовать встроенная функция Google Spreadsheet? - PullRequest
1 голос
/ 12 июня 2019

У меня есть функция, которая возвращает строку, которая является ячейками, которые мне нужно сканировать с помощью встроенной функции UNIQUE (), но она не обрабатывает возвращаемое значение.

Попытка поместить их в кавычки, не помогло.

function GetRange(sheet, ColumnLetter , Offset)
{
  var startColumn = letterToColumn(ColumnLetter);
  var string = "";

  for(var i=startColumn; i <= Offset; i++)
    {
      string += sheet + "!" + columnToLetter(i) +":"+columnToLetter(i)+";";      
    }

   string = string.substring(0, string.length-1);

   return string+"";
}

На стороне листа у меня есть это в ячейке

=UNIQUE({GetRange("Raid","C", 30)})

Я ожидал получить возвращенную строку во встроенную функцию UNIQUE()и выполнить код, как если бы я набрал его вручную.

Вместо этого он просто выводит возвращенную строку в ячейку, как это

 Raid!C:C;Raid!D:D;Raid!E:E;Raid!F:F;Raid!G:G;Raid!H:H;Raid!I:I;Raid!J:J;Raid!K:K;Raid!L:L;Raid!M:M;Raid!N:N;Raid!O:O;Raid!P:P;Raid!Q:Q;Raid!R:R;Raid!S:S;Raid!T:T;Raid!U:U;Raid!V:V;Raid!W:W;Raid!X:X;Raid!Y:Y;Raid!Z:Z;Raid!AA:AA;Raid!AB:AB;Raid!AC:AC;Raid!AD:AD

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Проблема:

Вы возвращаете строку из функции.Он не может быть оценен как литерал массива электронной таблицы.

Решение:

Вместо этого возвращайте массивы.

Фрагмент:

/**
 * @param {Raid!C:AD} range - Range to stack as a array
 * @return The provided 2D array stacked up vertically
 * @customfunction
 */
function stackUp(range) {
  return Array.prototype.concat.apply(
    [],
    range[0].map(function(col, i) {
      //for each column
      return range
        .map(function(row) {
          return [row[i]];
        }) //get each row in this column
        .filter(String); //ignore empty rows
    })
  );
}
0 голосов
/ 12 июня 2019

попробуйте вот так:

=ARRAYFORMULA(SORT(UNIQUE(TRANSPOSE(SPLIT(TRIM(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(LEN(Raid!A1:A), IF(Raid!C1:AL<>"", "♦"&Raid!C1:AL, ), )),,999^99)),,999^99)), "♦")))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...